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

问题描述 投票:2回答:1

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

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

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

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

android android-listview android-spinner
1个回答
0
投票
  1. 设计一个包含3个您想要的微调器的ListItem布局,然后将其设置为ListView适配器。
  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); } }

与上述国家和城市一样。

  1. 最初,您获取第一个国家/地区的数据并将其设置为First Spinner,它同时获取第一个国家/地区州,然后是第一个国家/地区,首个州相关城市。

希望这会帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.