包含多个动态旋转器的ListView行

时间:2012-10-04 06:09:54

标签: android android-listview android-spinner

我在特定行的listview控件中有多个Spinners。 我从WebService动态填充所有微调器,并且所有微调器值都可以在所选项上更改。

浓淡我有3个国家和州和城市的旋转器然后所有这3个旋转器从WS填充,而用户选择国家然后在countryselecteditem更改州和城市的所有数据。并且在州选择的项目城市数据变化...

此时我还滚动并继续该行getView()调用所有3个选定项目并按选定项目填充所有适配器。

如何在listview中处理3个微调器?

1 个答案:

答案 0 :(得分:0)

  1. 设计一个ListItem布局,其中包含3个您想要的微调器,然后将其设置为ListView Adapter。
  2. 然后使用包含3个ID的POJO类的通用类型的SubClassArrayAdapter(如果需要更多),如下所示,并将Adapter设置为ListView。

    class SpinnersStateInListItem
    {
      private int countrySelectedPosition=0;
      private int stateSelectedPosition=0;
      private int citySelectedPosition=0;
      //here you need to generate respective getters and setter methods.
     }
    

    //执行以下代码将SubClassArrayAdapter设置为listview,您可以从ArrayAdapter类中自定义视图

      SubClassArrayAdapter<SpinnersStateInListItem> = new SubClassArrayAdapter<SpinnersStateInListItem>(context,resourceid,listof SpinnersStateInListItem Generic type);
    

    在SubClassArrayAdapter类的getView()内部,创建3个微调器对象并将数组适配器设置为第一个Spinner,然后将OnItemSelectedListeners设置为3个微调器。 然后在第一个Spinner OnItemSelected方法中将ArrayAdapter设置为2nd Spinner,它将包含在第一个微调器中选择的State的State列表。然后在第二个Spinners OnItemSelected方法中将数组适配器设置为第三个Spinner,该方法包含根据所选国家/地区选择的城市列表。在这里,您应该根据所选项目过滤数据。当选择Items时,立即将它们保存到SpinnersStateInListItem各自的对象,这样即使你重新加载listview,所有状态的状态都将保持不变。例如如下。

    OnItemSelected()
    {
     if(v==firstspinner)
      {
        listofSpinnersStateinListItem.get(listitemposition).setCountrySelectedPosition(spinnerselectposition);  
       } 
      }
    
  3. 与州和城市的情况相同。

    1. 最初,您获取第一个国家/地区的数据并将其设置为First Spinner,同时获取第一个国家/地区州,然后是第一个国家/地区,首个州相关城市。
    2. 希望这会对你有所帮助。