我使用自己的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()?
为什么我需要这个?
这就是为什么每次新数据到达列表适配器时都应该重新计算我的视图类型的数量。
答案 0 :(得分:6)
我认为这是不可能的。
获取getViewTypeCount()
实施是适配器的定义的一部分;无论适配器的实际数据在任何给定时刻,它都可以定义所有可能的类型数据。
getViewTypeCount
来正确地回收列表项视图,这些视图在适配器所拥有的不同类型的数据之间可能非常不同。当您更改适配器中的数据时,视图仍会根据getViewTypeCount
的现有定义/实现进行回收。
如果您想再次调用getViewTypeCount
,请创建一个全新的适配器并将此新适配器设置为listview的适配器。
答案 1 :(得分:1)
我会尝试:
standingsListAdapter.notifyDataSetChanged();