我通过实现:
使用具有不同视图类型的ListViewpublic int getViewId();
哪个效果很好,但是在删除某个项目时会遇到NullPointerExceptions,因为在其上找不到视图元素。我认为这是由于查看回收,其中旧位置被错误的视图类型替换。
如何刷新布局并彻底重新渲染,所以这不会发生?
答案 0 :(得分:2)
在变更适配器的基础列表时,notifyDataSetChanged
和notifyDataSetInvalidated
是您的朋友。
答案 1 :(得分:0)
编辑ListView的数据源(List对象或其他内容),然后在适配器上调用notifyDataSetChanged()
。
public void updateMyListView(Element elementToRemove){
listViewData.remove(elementToTemove);
listView.getAdapter().notifyDatasetChanged();
}
编辑:
好的,您是否实施了getViewTypeCount()
和getItemViewType(int position)
机制?