繁体   English   中英

Android Spinner未填充JSON数据Volley Response

[英]Android Spinner not populating with JSON data Volley Response

我正在使用Multi Spinner和Android Volley库来处理我的应用程序的网络请求,问题是即使我从服务器获取响应,我的微调器也没有填充响应,而从volley的响应到IP的响应也没有填充微调器,请帮助...下面是我的代码

   StringRequest stringRequest = new StringRequest(Request.Method.GET, IP.IP+"/api/users/view_group", new com.android.volley.Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //Toast.makeText(Room_Config.this, response, Toast.LENGTH_SHORT).show();
              String   text=response;
                System.out.println(response);

                try {
                    JSONObject obj = new JSONObject(response);
                    String strMessage = (String) obj.get("message");
                    JSONArray jarray = new JSONArray(strMessage);
                    for (int i = 0; i < jarray.length(); i++) {
                        JSONObject obj1 = jarray.getJSONObject(i);
                        //id= (int) obj1.get("group_id");
                        list1.add((int) obj1.get("group_id"));
                        list.add((String) obj1.get("group_name"));
                        map.put((String) obj1.get("group_name"), (Integer) obj1.get("group_id"));}

                } catch (JSONException e) {
                    e.printStackTrace();
                }


            }
        }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error instanceof TimeoutError) {
                    Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();
                } else if (error instanceof NoConnectionError) {
                    Toast.makeText(Room_Config.this,"No Connection Found", Toast.LENGTH_SHORT).show();
                } else if (error instanceof ServerError) {
                    Toast.makeText(Room_Config.this,"Server Error", Toast.LENGTH_SHORT).show();
                } else if (error instanceof NetworkError) {
                    Toast.makeText(Room_Config.this,"Network Error", Toast.LENGTH_SHORT).show();
                } else if (error instanceof ParseError) {
                    Toast.makeText(Room_Config.this,"Parse Error", Toast.LENGTH_SHORT).show();
                }
            }
        });
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        queue.add(stringRequest);

 System.out.println("Group Name List is" + list);
        System.out.println("\nGroup id  list is---> " + list1);
        et1 = (EditText) findViewById(R.id.et1);
        et2 = (EditText) findViewById(R.id.et2);
        et3 = (EditText) findViewById(R.id.et3);

        et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.toString().length()<3) {
                    if (!validateNo()) {
                        return;
                    }
                }else {
                    inputLayoutNo.setErrorEnabled(false);
                }
            }
        });

et2.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (!validateName()) {
            return;
        }
    }
});

et3.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (!validateDesc()) {
            return;
        }
    }
});

if (list.isEmpty()){ Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();}


       // TreeMap<String, Boolean> items = new TreeMap<>();
        HashMap<String,Boolean> items=new HashMap<>();
        for (String item : list) {
            items.put(item, Boolean.FALSE);
        }
        MultiSpinner simpleSpinner = (MultiSpinner) findViewById(R.id.room_spinner);
        simpleSpinner.setItems(items, new MultiSpinner.MultiSpinnerListener() {

            @Override
            public void onItemsSelected(boolean[] selected) {
                mylist.clear();
                nlist.clear();
                // your operation with code...
                for (int i = 0; i < selected.length; i++) {
                    if (selected[i]) {
                        Log.i("TAG", i + " : " + list.get(i));
                        System.out.println("Selected Item is----->" + list.get(i));
                        mylist.add(list.get(i));
                        System.out.println("My List is\t" + mylist);

                    }


                }
                for (int j = 0; j < mylist.size(); j++) {
                    objh = map.get(mylist.get(j));
                    myIntArray = map.get(mylist.get(j));
                    nlist.add(myIntArray);
                    System.out.println("New Id List is-------->" + nlist);
                }


            }

        });

请帮忙.....

这是我使用的Multispinner类

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.util.AttributeSet;
import android.widget.ArrayAdapter;

import com.rey.material.widget.Spinner;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;

public class MultiSpinner extends Spinner implements OnMultiChoiceClickListener, OnCancelListener {

    private List<String> items;
    private boolean[] selected;
    private String defaultText = "Click to Select Group";
    private MultiSpinnerListener listener;

    public MultiSpinner(Context context) {
        super(context);
    }

    public MultiSpinner(Context arg0, AttributeSet arg1) {
        super(arg0, arg1);
    }

    public MultiSpinner(Context arg0, AttributeSet arg1, int arg2) {
        super(arg0, arg1, arg2);
    }

    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        selected[which] = isChecked;
    }

    @Override
    public void onCancel(DialogInterface dialog) {
        // refresh text on spinner
        StringBuilder spinnerBuffer = new StringBuilder();
        for (int i = 0; i < items.size(); i++) {
            if (selected[i]) {
                spinnerBuffer.append(items.get(i));
                spinnerBuffer.append(", ");
            }
        }

        String spinnerText = "";
        spinnerText = spinnerBuffer.toString();
        if (spinnerText.length() > 2) {
            spinnerText = spinnerText.substring(0, spinnerText.length() - 2);
        } else {
            spinnerText = defaultText;
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),
                R.layout.textview_for_spinner,
                new String[]{spinnerText});
        setAdapter(adapter);
        if (selected.length > 0) {
            listener.onItemsSelected(selected);
        }

    }

    @Override
    public boolean performClick() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle(defaultText);
        builder.setMultiChoiceItems(
                items.toArray(new CharSequence[items.size()]), selected, this);
        builder.setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        builder.setOnCancelListener(this);
        builder.show();
        return true;
    }

    /**
     * Sets items to this spinner.
     *  @param items    A HashMap where the keys are the values to display in the spinner
     *                 and the value the initial selected state of the key.
     * @param listener A MultiSpinnerListener.
     */
    public void setItems(HashMap<String, Boolean> items,
                         MultiSpinnerListener listener) {
        this.items = new ArrayList<>(items.keySet());
        this.listener = listener;

        List<Boolean> values = new ArrayList<>(items.values());
        selected = new boolean[values.size()];
        for (int i = 0; i < items.size(); i++) {
            selected[i] = values.get(i);
        }

        // all text on the spinner
        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),
                R.layout.textview_for_spinner, new String[]{defaultText});
        setAdapter(adapter);

        // Set Spinner Text
        onCancel(null);
    }

    public interface MultiSpinnerListener {
        void onItemsSelected(boolean[] selected);
    }


}

本文所述

// create spinner list elements
    ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    adapter.add("Item1");
    adapter.add("Item2");
    adapter.add("Item3");
    adapter.add("Item4");
    adapter.add("Item5");

    // get spinner and set adapter
    spinner = (MultiSpinner) findViewById(R.id.spinnerMulti);
    spinner.setAdapter(adapter, false, onSelectedListener);

使用此代码解决您的问题

StringRequest stringRequest = new StringRequest(Request.Method.GET, IP.IP+"/api/users/view_group", new com.android.volley.Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //Toast.makeText(Room_Config.this, response, Toast.LENGTH_SHORT).show();
              String   text=response;
                System.out.println(response);

                try {
                    JSONObject obj = new JSONObject(response);
                    String strMessage = (String) obj.get("message");
                    JSONArray jarray = new JSONArray(strMessage);
                    for (int i = 0; i < jarray.length(); i++) {
                        JSONObject obj1 = jarray.getJSONObject(i);
                        //id= (int) obj1.get("group_id");
                        list1.add((int) obj1.get("group_id"));
                        list.add((String) obj1.get("group_name"));
                        map.put((String) obj1.get("group_name"), (Integer) obj1.get("group_id"));}
//call this method with your new data eg map
setSpinnerData(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }


            }
        }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error instanceof TimeoutError) {
                    Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();
                } else if (error instanceof NoConnectionError) {
                    Toast.makeText(Room_Config.this,"No Connection Found", Toast.LENGTH_SHORT).show();
                } else if (error instanceof ServerError) {
                    Toast.makeText(Room_Config.this,"Server Error", Toast.LENGTH_SHORT).show();
                } else if (error instanceof NetworkError) {
                    Toast.makeText(Room_Config.this,"Network Error", Toast.LENGTH_SHORT).show();
                } else if (error instanceof ParseError) {
                    Toast.makeText(Room_Config.this,"Parse Error", Toast.LENGTH_SHORT).show();
                }
            }
        });
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        queue.add(stringRequest);

 System.out.println("Group Name List is" + list);
        System.out.println("\nGroup id  list is---> " + list1);
        et1 = (EditText) findViewById(R.id.et1);
        et2 = (EditText) findViewById(R.id.et2);
        et3 = (EditText) findViewById(R.id.et3);

        et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.toString().length()<3) {
                    if (!validateNo()) {
                        return;
                    }
                }else {
                    inputLayoutNo.setErrorEnabled(false);
                }
            }
        });

et2.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (!validateName()) {
            return;
        }
    }
});

et3.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (!validateDesc()) {
            return;
        }
    }
});

if (list.isEmpty()){ Toast.makeText(Room_Config.this,"Request Time-Out", Toast.LENGTH_SHORT).show();}


       // TreeMap<String, Boolean> items = new TreeMap<>();
        HashMap<String,Boolean> items=new HashMap<>();
        for (String item : list) {
            items.put(item, Boolean.FALSE);
        }
        MultiSpinner simpleSpinner = (MultiSpinner) findViewById(R.id.room_spinner);
        setSpinnerData(items);

新方法

public void setSpinnerData(TreeMap<String, Boolean> items){
simpleSpinner.setItems(items, new MultiSpinner.MultiSpinnerListener() {

            @Override
            public void onItemsSelected(boolean[] selected) {
                mylist.clear();
                nlist.clear();
                // your operation with code...
                for (int i = 0; i < selected.length; i++) {
                    if (selected[i]) {
                        Log.i("TAG", i + " : " + list.get(i));
                        System.out.println("Selected Item is----->" + list.get(i));
                        mylist.add(list.get(i));
                        System.out.println("My List is\t" + mylist);

                    }


                }
                for (int j = 0; j < mylist.size(); j++) {
                    objh = map.get(mylist.get(j));
                    myIntArray = map.get(mylist.get(j));
                    nlist.add(myIntArray);
                    System.out.println("New Id List is-------->" + nlist);
                }


            }

        });}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM