我在特定行的listview控件中有多个Spinners。 我从WebService动态填充所有微调器,并且所有微调器值都可以在所选项上更改。
浓淡我有3个国家和州和城市的旋转器然后所有这3个旋转器从WS填充,而用户选择国家然后在countryselecteditem更改州和城市的所有数据。并且在州选择的项目城市数据变化...
此时我还滚动并继续该行getView()
调用所有3个选定项目并按选定项目填充所有适配器。
如何在listview中处理3个微调器?
答案 0 :(得分:0)
然后使用包含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);
}
}
与州和城市的情况相同。
希望这会对你有所帮助。