【问题标题】:view of spinner doesn't gets updated微调器的视图没有更新
【发布时间】:2019-07-22 01:05:04
【问题描述】:

我正在使用相互依赖的微调器。因此,当我在微调器 A 中选择一个值时,其他微调器 B、C、D 的数组列表会相应更改。 当我在微调器 B 的位置 1 处选择项目,然后在微调器 A 中选择任何其他值时,微调器 B 上的数据会更新。所以我再次选择微调器 B 上位置 1 的项目,视图不会改变,而在任何其他位置选择项目会改变视图。所以在这段代码中,相同的索引不会得到更新的值。

   ArrayAdapter<String> myAdapterEmployer = new ArrayAdapter<String>(MainActivity.this,
            android.R.layout.simple_list_item_1,employerlist);
    myAdapterEmployer.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    employer.setAdapter(myAdapterEmployer);

    employer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                                   int position, long id)
        {
            if(position > 0) {
                employer1 = employer.getSelectedItem().toString();
                employeridname = employdetail.get(employer1);
                Sectorlist(employeridname);

            }
        }

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


        }


    });  

每次在雇主中选择一个项目时,这都会更改 Sectorlist 的数据。 然后在扇区列表中选择任何项目。

     ArrayAdapter<String> myAdaptersector = new ArrayAdapter<String>(MainActivity.this,
            android.R.layout.simple_list_item_1,sectorlist);
    myAdaptersector.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sector.setAdapter(myAdaptersector);

    sector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                                   int position, long id)
        {
            sector1=sector.getSelectedItem().toString();
           String selectedsectortext  = (String) parent.getItemAtPosition(position);

            if(position > 0){
                sectoridd=sectordetail.get(selectedsectortext);

            }
        }

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

        }
    });

在这里,当我选择与之前相同索引的项目时,它不会在微调器视图中更新。

【问题讨论】:

    标签: android dynamic spinner android-spinner


    【解决方案1】:

    在您的微调器 AonItemSelected 中,您可以将适配器设置为要更新的其他微调器,这将按您的意愿工作。

     employer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
    
                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                                           int position, long id)
                {
                    if(position > 0) {
                        employer1 = employer.getSelectedItem().toString();
                        employeridname = employdetail.get(employer1);
                        Sectorlist(employeridname);
    
                        // Update other spinners here
                        myAdaptersector = new ArrayAdapter<String>(MainActivity.this,
                        android.R.layout.simple_list_item_1,sectorlist);
                        myAdaptersector.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        sector.setAdapter(myAdaptersector);
                    }
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
    
                }  
    });  
    

    【讨论】:

    • 它没有用。给出与之前相同的结果。未选择同一索引上的数据。
    • 在这种情况下调试扇区微调器 onItemSelected 以查看发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多