在recyclerview中添加数据

时间:2016-10-16 08:33:28

标签: android android-recyclerview android-adapter

通过这种方式,我创建了recyclerview内容:

MyAdapter adapter = new MyAdapter(new String[]{"one", "two", ..."});
rv.setAdapter(adapter);

但现在我想添加更多数据,例如,如何在new String[]{"nine", "ten", ..."}内添加新字符串recyclerview

我需要以这种方式添加更多数据。我也尝试过关于stackoverflow的其他讨论,但没有。

编辑:

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的解决方案类似,但为什么我看到错误:“无法解决......”?

3 个答案:

答案 0 :(得分:0)

取一个ArrayList&lt;&gt;(),比如stringList并向其添加数据。然后通知适配器有关数据集更改的信息。

使用此数据结构初始化适配器。

MyAdapter adapter = new MyAdapter(stringList);
rv.setAdapter(adapter);

通过此次调用添加更多项目。

private void addItem(String item) {
  stringList.add(item);
  adapter.notifyDataSetChanged();
}

答案 1 :(得分:0)

我建议您将数据集从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();
}

答案 2 :(得分:0)

@Helpme如果您的列表很小,那么您可能会考虑使用普通的ListView 如果你想使用recyclerview,我建议你考虑把你的数据放在SQLite数据库中。使用Model Class与DBHelper类和Adapter类一起使用。这里有一些链接 List View

Recycler View