我想更新我的列表,即使适配器是null
,但我不知道该怎么做。
当我执行以下代码时,我的应用程序崩溃了:
ProductAdapter adapter = new ProductAdapter(context, R.layout.listrow, yal);
if(adapter.getCount()>0){
lv.setAdapter(adapter);
}else{
lv.setAdapter(null);
}
adapter.notifyDataSetChanged();
lv.invalidateViews();
答案 0 :(得分:1)
适配器是列表的数据源。它提供单独的列表项。没有适配器就没有列表,因为那时列表中没有行。
查看ListView documentation了解详情。
答案 1 :(得分:0)
不要使适配器无效 - listView总是需要一个。相反,取消适配器使用的数据集,并确保getCount()
如果数据集为空(或为空)则返回0
。或者不要使数据集无效,但要使其成为空列表或数组。
如果数据发生更改,请更新适配器数据集并在适配器上调用notifyDatasetChanged()。获取新数据时,请勿为ListView创建新的适配器。这有几个原因很重要;例如listViews位置不会跳到顶部但保持原样。
示例:
ProductAdapter adapter = new ProductAdapter(context, R.layout.listrow, null);
listView.setAdapter(adapter);
后
adapter.setData(newData);
adapter.notifyDatasetChanged();