1

即使适配器是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();
4

2 回答 2

1

适配器是列表的数据源。它提供了单独的列表项。没有适配器就不能有一个列表,因为那样的话列表中就没有行了。

查看ListView 文档以获取更多信息。

于 2013-03-13T12:57:25.020 回答
0

不要取消适配器 - listView 总是需要一个。相反,使适配器使用的数据集无效,并确保在数据集为空(或为空)getCount()时返回。0或者不要使数据集无效,而是将其设为空列表或数组。

如果您的数据发生更改,请更新适配器数据集并在适配器上调用 notifyDatasetChanged()。获取新数据时不要为 ListView 创建新的适配器。这很重要,有几个原因;例如,listViews 的位置不会跳到顶部,而是留在原处。

例子:

ProductAdapter adapter = new ProductAdapter(context, R.layout.listrow, null);
listView.setAdapter(adapter);

之后

adapter.setData(newData);
adapter.notifyDatasetChanged();
于 2013-03-28T08:34:31.330 回答