【发布时间】:2013-02-26 20:52:58
【问题描述】:
我将自己的BaseAdapter (standingsListAdapter) 用于ListView (standingsLV)。
当我设置适配器时:
standingsLV.setAdapter(standingsListAdapter);
getViewTypeCount() 被调用。
但后来,当我在适配器中设置新数据时:
standingsListAdapter.setData(data);
在哪里setData(data)设置新数据后调用notifyDataSetChanged():
public void setData(StandingsModelWrapper data) {
groupsData.clear();
if (data != null) {
groupsData.addAll(data.getModel());
}
notifyDataSetChanged();
}
方法 getViewTypeCount() 不再被调用。为什么? 如何强制适配器再次检查getViewTypeCount()?
我为什么需要这个?
- 我在列表的每一行都显示表格。表格有不同的长度(行数)。
- 我想在适配器中设置新数据,以便表的长度可以改变
这就是为什么每次新数据到达列表适配器时都应该重新计算我的视图类型的数量。
【问题讨论】:
-
我不确定这是否可行,但您可以尝试使用相同的适配器再次调用 setAdapter。
-
setAdapter无论如何都会调用notifyDataSetChange(),也会做一些额外的工作......我建议你只使用那种方法,就像@pietmau 说的那样。
标签: android listview android-listview adapter baseadapter