Passing a parameter to spinner in android

蓝咒 提交于 2019-12-12 03:08:15

问题


I have 2 spinners and first loading the values to the 1st spinner from the json response. Then select a value from 1st spinner then selected value from 1st spinner will be send to a method another method called getFilteredDescriptions() and it returns a ArrayList() called resultDescription. I want to set it as the input to the 2nd spinner.

I have assign the value resultDescription to the 2nd spinner but I haven't done in correct way because I have initialized or declare. Can anyone tell me how to do it? Any help will be appreciated.

@Override
public void onTaskCompleted(JSONArray responseJson) {

    try {
        List<String> crust = new ArrayList<String>();
        final List<String> description = new ArrayList<String>();

        for (int i = 0; i < responseJson.length(); ++i) {
            JSONObject object = responseJson.getJSONObject(i);

            if ((object.getString("MainCategoryID")).equals("1")) {
                Log.i("Description ", object.getString("Description"));
                descriptionHalf.add(object.getString("Description"));
                JSONArray subMenuArray = object
                        .getJSONArray("SubMenuEntity");
                for (int j = 0; j < subMenuArray.length(); ++j) {
                    JSONObject subMenuObject = subMenuArray
                            .getJSONObject(j);
                    Log.i("Crust", subMenuObject.getString("Crust"));
                    crust.add(subMenuObject.getString("Crust"));

                    Log.i("Description",
                            subMenuObject.getString("Description"));
                    description.add(subMenuObject.getString("Description"));


                    Log.i("Description",
                            subMenuObject.getString("Description"));
                }

            }

            crustSP = (Spinner) findViewById(R.id.sp_crust);
            sizeSP = (Spinner) findViewById(R.id.sp_pizza_size);

            crust = Utils.removeDuplicatesFromList(crust);
            ArrayAdapter<String> dataAdapterCru = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, crust);
            dataAdapterCru
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            crustSP.setAdapter(dataAdapterCru);
            crustSP.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onNothingSelected(AdapterView<?> arg0) {
                }

                @Override
                public void onItemSelected(AdapterView<?> parent,
                        View view, int position, long id) {

                    String crustSelectedItem = crustSP.getSelectedItem()
                            .toString();

                    getFilteredDescriptions(crustSelectedItem, description);

                }
            });

            ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, resultDescription); //resultDescription cannot be resolved to a variable
            dataAdapterDes
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sizeSP.setAdapter(dataAdapterDes);
            sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
                    dataAdapterDes,
                    R.layout.contact_spinner_row_nothing_selected, this));
            sizeSP.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onNothingSelected(AdapterView<?> arg0) {
                }

                @Override
                public void onItemSelected(AdapterView<?> parent,
                        View view, int position, long id) {

                }
            });

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

}

List<String> getFilteredDescriptions(String crustSelectedItem,
        List<String> description) {
    List<String> resultDescription = new ArrayList<String>();
    crustSelectedItem = crustSP.getSelectedItem().toString();

    if (description == null || description.isEmpty())
        return resultDescription;

    for (int i = 0; i < description.size(); i++) {
        description = Utils.removeDuplicatesFromList(description);
        if (!description.get(i).contains(crustSelectedItem))
            continue;

        resultDescription.add(description.get(i));

    }

    return resultDescription; //send this above dataAdapterDes Adapter

}

回答1:


your code will look like below.

 @Override
public void onTaskCompleted(JSONArray responseJson) {

    try {
        List<String> crust = new ArrayList<String>();
        final List<String> description = new ArrayList<String>();

        for (int i = 0; i < responseJson.length(); ++i) {
            JSONObject object = responseJson.getJSONObject(i);

            if ((object.getString("MainCategoryID")).equals("1")) {
                Log.i("Description ", object.getString("Description"));
                descriptionHalf.add(object.getString("Description"));
                JSONArray subMenuArray = object
                        .getJSONArray("SubMenuEntity");
                for (int j = 0; j < subMenuArray.length(); ++j) {
                    JSONObject subMenuObject = subMenuArray
                            .getJSONObject(j);
                    Log.i("Crust", subMenuObject.getString("Crust"));
                    crust.add(subMenuObject.getString("Crust"));

                    Log.i("Description",
                            subMenuObject.getString("Description"));
                    description.add(subMenuObject.getString("Description"));


                    Log.i("Description",
                            subMenuObject.getString("Description"));
                }

            }

            crustSP = (Spinner) findViewById(R.id.sp_crust);
            sizeSP = (Spinner) findViewById(R.id.sp_pizza_size);

            crust = Utils.removeDuplicatesFromList(crust);
            ArrayAdapter<String> dataAdapterCru = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, crust);
            dataAdapterCru
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            crustSP.setAdapter(dataAdapterCru);
            crustSP.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onNothingSelected(AdapterView<?> arg0) {
                }

                @Override
                public void onItemSelected(AdapterView<?> parent,
                        View view, int position, long id) {

                    String crustSelectedItem = crustSP.getSelectedItem()
                            .toString();

                   List<String> resultDescription =  getFilteredDescriptions(crustSelectedItem, description);
                    ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                            this, android.R.layout.simple_spinner_item, resultDescription); //resultDescription cannot be resolved to a variable
                    dataAdapterDes
                            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    sizeSP.setAdapter(dataAdapterDes);
                    sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
                            dataAdapterDes,
                            R.layout.contact_spinner_row_nothing_selected, this));
                }
            });


            sizeSP.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onNothingSelected(AdapterView<?> arg0) {
                }

                @Override
                public void onItemSelected(AdapterView<?> parent,
                        View view, int position, long id) {

                }
            });

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

}

learn some basic coding as well. Instead of this use Activity/Class_Name.this



来源:https://stackoverflow.com/questions/28824787/passing-a-parameter-to-spinner-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!