【问题标题】:How do I use if-else in two Adapters如何在两个适配器中使用 if-else
【发布时间】:2017-08-22 05:41:08
【问题描述】:

我有两个适配器,一个用于国家,另一个用于大陆。

我想要发生的是:当我在Continent's Spinner中选择一个大陆时,例如“亚洲”,其他国家是:“比利时”,“法国”,“意大利”,当我单击Countries' Spinner 时,“德国”、“西班牙”不会显示在列表中。因此,列表中只会显示“中国”。

注意:我不知道代码是否正常工作,我只是根据 github 帖子中的大洲代码并对其进行了编辑。

我复制代码的链接:https://stackoverflow.com/questions/ask

国家适配器和微调器:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, COUNTRIES);
         BetterSpinner textView = (BetterSpinner)
                 findViewById(R.id.countries_list);
         textView.setAdapter(adapter);
     }

     private static final String[] COUNTRIES = new String[] {
         "Belgium", "France", "Italy", "Germany", "Spain", "China"
     };

大陆适配器和微调器:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, CONTINENTS);
         BetterSpinner textView = (BetterSpinner)
                 findViewById(R.id.continents_list);
         textView.setAdapter(adapter);
     }

     private static final String[] COUNTRIES = new String[] {
         "Asia", "Europe", "North America", "South America"
     };

【问题讨论】:

  • 基本方式是在用户从第一个选择之后取消填充并填充第二个微调器。
  • 对不起,我真的不知道该怎么办。你能通过发布代码来指导我吗嘿嘿。谢谢。
  • 将所选项目的侦听器添加到第一个微调器,并过滤该侦听器中的第二个微调器。

标签: java android


【解决方案1】:

你可以试试这个

大陆适配器和微调器:

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                     android.R.layout.simple_dropdown_item_1line, CONTINENTS);
             BetterSpinner textView = (BetterSpinner)
                     findViewById(R.id.continents_list);
             textView.setAdapter(adapter);
             textView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {
                    String selectedContinent=CONTINENTS[pos];
                    if(selectedContinente.equals("Asia"){
                        //Code to generate another spinner for countries
                        setCountrySpinner();    

                    }

                }

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

                }
            });

         }

         private static final String[] CONTINENTS = new String[] {
             "Asia", "Europe", "North America", "South America"
         };

 private static final String[] ASIA_COUNTRIES = new String[] {
          "India","China"
     };

 private static final String[] OTHER_COUNTRIES = new String[] {
          "Belgium", "France", "Italy", "Germany", "Spain"
     };



private void setCountrySpinner(){
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, ASIA_COUNTRIES);
         BetterSpinner textView = (BetterSpinner)
                 findViewById(R.id.countries_list);
         textView.setAdapter(adapter);
     }
}

使用这种方式,您需要为不同的国家/地区制作不同的数组。 这不是最好的方法。我建议您为此创建一个模型类,例如:

private class CountryModel{
      private String continentName;
      private String countryName;

}

使用这个模型类,您可以根据 ContinentName 获取国家/地区名称。

【讨论】:

  • 嗯,你会如何分片做到这一点?
【解决方案2】:

对于国家而不是字符串数组:

private static final String[] COUNTRIES = new String[] {
     "Belgium", "France", "Italy", "Germany", "Spain", "China"
 };

使用String数组的ArrayList:

private static ArrayList COUNTRIES = new ArrayList<>();
arrayList.add(new String[]{"Belgium", "France", "Italy", "Germany", "Spain"});
arrayList.add(new String[]{"China"});

现在根据用户在微调器上的选择位置,您可以简单地从 ArrayList 中该位置的字符串数组中显示国家/地区。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多