我正在使用两个微调器,其中第二个微调器值基于第一个微调器值。

例如,如果用户在“第一个微调器”中选择选项A,则“第二个微调器”下拉列表必须包含值(牛,牛,山羊),如果用户选择选项B,则第二个微调器值必须包含(狮子,老虎和奇埃塔)。

但是我做不到。在第一个微调器值中选择任何值时,第二个微调器始终加载相同的值。下面是屏幕截图
java - 无法根据第一个Spinner值获得Second Spinner值-LMLPHP

java - 无法根据第一个Spinner值获得Second Spinner值-LMLPHP

如您所见,在选择第一个微调器母版或文凭中的任何选项时...在第二个微调器值中是相同的。它不会更改。

以下是我的活动代码

 public class UploadBook extends AppCompatActivity
        Spinner spinnerCountry,spinnerDivision,spinner_condition;
        ArrayAdapter<String> countryArray,divisionArray;

        String item = "start";

        int count = 0;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_upload_book);
            getSupportActionBar().setTitle("Upload book");

            spinnerCountry = (Spinner) findViewById(R.id.spinnerCountry);
            //implementing OnItemSelectedListener (need to override the method)
            spinnerCountry.setOnItemSelectedListener(this);

            countryArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
            countryArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinnerCountry.setAdapter(countryArray);

            countryArray.add("Master");

            countryArray.add("Diploma");

            countryArray.setNotifyOnChange(true);

            spinnerCountry.setSelection(0);

            spinnerDivision = (Spinner) findViewById(R.id.spinnerDivision);
            //implementing OnItemSelectedListener (need to override the method)
            spinnerDivision.setOnItemSelectedListener(this);

            divisionArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
            divisionArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinnerDivision.setAdapter(divisionArray);

        }

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

            item = parent.getItemAtPosition(position).toString();
            count = position;
            //first spinner item position
            int countrySpinnerPosition = spinnerCountry.getSelectedItemPosition();
            switch (countrySpinnerPosition){
                case 1:
                    //fill data for second spinner
                    fillMasterDivision();
                    break;
                case 2:
                    //fill data for second spinner
                    fillDiplomaDivision();
                    break;

            }

        }

        private void fillMasterDivision() {
            divisionArray.clear();
            divisionArray.add("Select Subject:-");
            divisionArray.add("MSC Physics");
            divisionArray.add("MSC Chemistry");

            divisionArray.notifyDataSetChanged();
        }

        private void fillDiplomaDivision() {
            divisionArray.add("Select Subject:-");
            divisionArray.add("Science");
            divisionArray.add("CTEVT");
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }


请帮忙。

最佳答案

尝试清除第二个方法中的arraylist和notifydatasetchanged

    private void fillDiplomaDivision() {
    divisionArray.clear();
    divisionArray.add("Select Subject:-");
    divisionArray.add("Science");
    divisionArray.add("CTEVT");

    divisionArray.notifyDataSetChanged();
}

10-08 17:13