在recyclerview中添加数据
Add data in recyclerview
通过这种方式,我创建了我的 recyclerview
内容:
MyAdapter adapter = new MyAdapter(new String[]{"one", "two", ..."});
rv.setAdapter(adapter);
但现在我想添加更多数据,例如,如何在这个recyclerview
中添加一个新字符串new String[]{"nine", "ten", ..."}
?
我需要通过这种方式添加更多数据。我也尝试查看有关 Whosebug 的其他讨论,但没有。
编辑:
private List<list> list;
rv=(RecyclerView)findViewById(R.id.rv);
llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
rv.setHasFixedSize(true);
list.add(new New("1", "a"));
list.add(new New("2", "b"));
RVAdapter adapter = new RVAdapter(Array);
rv.setAdapter(adapter);
rv.addOnScrollListener(new RecyclerView.OnScrollListener()
{
....
if ( visibleItemCount + pastVisiblesItems) >= totalItemCount)
{
list.add(new New("9", "A"));
list.add(new New("10", "B"));
//method 1, but don't work:
RVAdapter adapter = new RVAdapter(list);
adapter.notifyDataSetChanged();
//method 2, this method work but don't add nothing, the rv is recrated with new list. the user is forced to go on top in this way.
RVAdapter adapter = new RVAdapter(list);
rv.setAdapter(adapter);
//method 3, return "cannot resolve method notifyDataSetChanged()"
RVAdapter adapter = new RVAdapter(list);
rv.notifyDataSetChanged();
}
也许解决方案与方法 2 相似,但为什么我看到错误:"Cannot resolve..."?
获取一个 ArrayList<>(),比如 stringList 并向其中添加数据。然后通知您的适配器有关数据集的更改。
使用此数据结构初始化您的适配器。
MyAdapter adapter = new MyAdapter(stringList);
rv.setAdapter(adapter);
通过此调用添加更多项目。
private void addItem(String item) {
stringList.add(item);
adapter.notifyDataSetChanged();
}
我建议将您的数据集从 String
数组更改为 Collection
,例如 List
。
初始化数据集如下,
List<String> dataset = new ArrayList<String>();
dataset.add("one");
dataset.add("two");
初始化适配器,
MyAdapter adapter = new MyAdapter(dataset);
rv.setAdapter(adapter);
要添加更多项目,
dataset.add("nine");
dataset.add("ten");
// notify the adapter that the dataset has changed
adapter.notifyDataSetChanged();
编辑
将此应用于您的编辑,
if ( visibleItemCount + pastVisiblesItems) >= totalItemCount) {
list.add(new New("9", "A"));
list.add(new New("10", "B"));
adapter.notifyDataSetChanged();
}
@Helpme 如果你的列表很小,那么你可以考虑一个普通的 ListView
如果你想使用 recyclerview,我建议你考虑将你的数据放在 SQLite 数据库中。使用模型 Class 与 DBHelper Class 和适配器 Class 一起工作。这里有几个链接
List View
通过这种方式,我创建了我的 recyclerview
内容:
MyAdapter adapter = new MyAdapter(new String[]{"one", "two", ..."});
rv.setAdapter(adapter);
但现在我想添加更多数据,例如,如何在这个recyclerview
中添加一个新字符串new String[]{"nine", "ten", ..."}
?
我需要通过这种方式添加更多数据。我也尝试查看有关 Whosebug 的其他讨论,但没有。
编辑:
private List<list> list;
rv=(RecyclerView)findViewById(R.id.rv);
llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
rv.setHasFixedSize(true);
list.add(new New("1", "a"));
list.add(new New("2", "b"));
RVAdapter adapter = new RVAdapter(Array);
rv.setAdapter(adapter);
rv.addOnScrollListener(new RecyclerView.OnScrollListener()
{
....
if ( visibleItemCount + pastVisiblesItems) >= totalItemCount)
{
list.add(new New("9", "A"));
list.add(new New("10", "B"));
//method 1, but don't work:
RVAdapter adapter = new RVAdapter(list);
adapter.notifyDataSetChanged();
//method 2, this method work but don't add nothing, the rv is recrated with new list. the user is forced to go on top in this way.
RVAdapter adapter = new RVAdapter(list);
rv.setAdapter(adapter);
//method 3, return "cannot resolve method notifyDataSetChanged()"
RVAdapter adapter = new RVAdapter(list);
rv.notifyDataSetChanged();
}
也许解决方案与方法 2 相似,但为什么我看到错误:"Cannot resolve..."?
获取一个 ArrayList<>(),比如 stringList 并向其中添加数据。然后通知您的适配器有关数据集的更改。
使用此数据结构初始化您的适配器。
MyAdapter adapter = new MyAdapter(stringList);
rv.setAdapter(adapter);
通过此调用添加更多项目。
private void addItem(String item) {
stringList.add(item);
adapter.notifyDataSetChanged();
}
我建议将您的数据集从 String
数组更改为 Collection
,例如 List
。
初始化数据集如下,
List<String> dataset = new ArrayList<String>();
dataset.add("one");
dataset.add("two");
初始化适配器,
MyAdapter adapter = new MyAdapter(dataset);
rv.setAdapter(adapter);
要添加更多项目,
dataset.add("nine");
dataset.add("ten");
// notify the adapter that the dataset has changed
adapter.notifyDataSetChanged();
编辑
将此应用于您的编辑,
if ( visibleItemCount + pastVisiblesItems) >= totalItemCount) {
list.add(new New("9", "A"));
list.add(new New("10", "B"));
adapter.notifyDataSetChanged();
}
@Helpme 如果你的列表很小,那么你可以考虑一个普通的 ListView 如果你想使用 recyclerview,我建议你考虑将你的数据放在 SQLite 数据库中。使用模型 Class 与 DBHelper Class 和适配器 Class 一起工作。这里有几个链接 List View