在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

Recycler View