即使其适配器为null,也要更新ListView

时间:2013-03-13 12:40:25

标签: android listview adapter

我想更新我的列表,即使适配器是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();

2 个答案:

答案 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();