场景:我使用带有自定义适配器的列表视图。我每5秒取一次数据,然后在listview中显示它。
问题:每次刷新后,列表在顶部滚动。我希望从滚动的角度来看,列表保持原样,只是要刷新的底层数据。
当前代码:每次获取新数据时调用。
mListAdapter = new CustomListAdapter(this, mListData);
mList.setAdapter(mListAdapter);
请尝试在每次获取数据时输入以下代码:
adapter.notifyDataSetChanged();
您应该将新数据设置为适配器,然后调用notifyDataSetChanged,而不是调用此方法。
希望这对你有帮助!
当你得到新的mListData时只需使适配器无效而不是重新初始化适配器你可以这样调用
mListAdapter.notifyDataSetChanged();
可以使用
mList.setSelection(mListData.size() - CONSTANT.CONTENT_SIZE);
这样列表视图就不会刷新到顶部。或者也可以使用
adapter.notifydatasetchanged
This Worked For Me:
adapter.setData(list);
adapter.notifyDataSetChanged();