我正在从我的后台方法更新我的listview:
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
BaseAdapter adapter = new SimpleAdapter(
AllProductsActivity.this, productsList,
R.layout.list_item, new String[] { TAG_PID,
TAG_NAME},
new int[] { R.id.pid, R.id.name });
// updating listview
if(getListView().getAdapter() == null){ //Adapter not set yet.
setListAdapter(adapter);
Log.v("ha", "bla");
}
else
{ //Already has an adapter
adapter.notifyDataSetChanged();
}
}
});
执行此代码:
- 首次加载
-on滚动以加载更多内容,我在其中调用adapter.notifyDataSetChanged()
,但没有成功。
如何更新我的代码,以便我可以使用notifydatasetchanged并将新数据添加到当前数据。
我的整个代码:http://pastebin.com/cWmday3i感谢任何帮助。
答案 0 :(得分:2)
编写代码的方式应始终调用setListAdapter
,因为每次执行runOnUhThread中的runnable时,都会创建一个新的Adapter,可能带有一个新的数据集。 notifyDataSetChanged
和NotifyDataSetChanged
之间的唯一区别是第二个不属于Android的API
答案 1 :(得分:1)
notifyDataSetChanged()
将不会执行任何操作。在else块中,您需要在调用notifyDataSetChanged()
之前将JSON结果传输到现有适配器。
此外,if块上方的代码应移至if块内,因为它在if块之外未使用。这种模棱两可可能导致你的疏忽。
答案 2 :(得分:-1)
将下面的行放在一边runOnUiThread
adapter.notifyDataSetChanged();
答案 3 :(得分:-1)
试试这个它会起作用。
getListView().getAdapter().notifyDataSetChanged()