我有一个列表视图,我在固定间隔后添加一些数据。但我不想再次设置适配器,因为它会刷新完整列表。是否有任何方法可以在不刷新完整列表的情况下添加项目。
提前致谢。
您可能想要使用以下内容(在RecycleView
not中ListView
):
notifyItemInserted(0);//NOT notifyDataChanged()
recyclerViewSource.scrollToPosition(0);
//Scroll up, to use this you'll need an instance of the adapter's RecycleView
你可以用这个。notifyDataSetChanged()
但是 notifyDataSetChanged() 仅适用于 ArrayAdapter,如果您在 Adapter 上使用 add、insert、remove 和 clear 函数。
你可以打电话adapter.notifyDataSetChanged()
来更新列表。
适配器的getView()
调用时间不同,没有特定的模式。因此,您的视图会在需要更新时ListView
更新。
但据我所知,您正在寻找adapter.notifyDataSetChanged
. 工作流程应该是这样的。
Set adapter to ListView
Add data to adapter`
Call notifyDataSetChanged() on adapter.
它至少会阻止您的列表反弹到列表中的第一个项目。希望有帮助。
您可以使用
adapter.add(<new data item>); // to add data to your adapter
adapter.notifyDatasetChanged(); // to refresh
例如。
ArrayAdapter<String> adapter;
public void onCreate() {
....
....
ArryList<String> data = new ArrayList<String>();
for(int i=0; i<10; i++) {
data.add("Item " + (i+1));
}
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
现在,每当您有新数据要添加到列表中时,您都可以执行以下操作
private void appendToList(ArrayList<String> newData) {
for(String data : newData)
adapter.add(data);
adapter.notifyDatasetChanged();
}