【问题标题】:How to add list of new items to recycler view for exisitng list without moving to top of list如何在不移动到列表顶部的情况下将新项目列表添加到现有列表的 recyclerview
【发布时间】:2016-06-29 17:17:42
【问题描述】:

我正在尝试为我的应用程序实现分页,并且部分成功。当我打电话给我的服务器时,我得到了一些 6 个项目,我正在将这些项目添加到 recyclerview。当用户来并滚动到最后一个项目时,我正在再次调用服务器,我正在获取第 2 页项目并将新项目添加到现有列表中。

在这里我可以成功添加新项目。但问题是我打电话给adapter.notifyDataSetChanged(),因此在添加新项目后它会转到第一个项目。

如何阻止它进入列表顶部,除了adapter.notifyDataSetChanged(),我应该调用什么?下面是我设置适配器的代码

toadlineAdapter = new ToadlineAdapter(mContext, getData());
recyclerView.setAdapter(toadlineAdapter);
toadlineAdapter.notifyDataSetChanged();
toadlineAdapter.setClickListener(this);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

【问题讨论】:

  • 在您将此适配器设置为recyclerView 后,无需立即致电notifyDataSetChanged !!!!!!!!!!!! ...还有添加项目的代码在哪里?
  • ... 也来自RecyclerView.Adapter.notifyDataSetChanged() docs - 如果您正在编写适配器,如果可以的话,使用更具体的更改事件总是更有效。将 notifyDataSetChanged() 作为最后的手段。 .... 你有没有尝试阅读它?

标签: android android-recyclerview


【解决方案1】:

初始化适配器时无需通知:

toadlineAdapter = new ToadlineAdapter(mContext, getData());
recyclerView.setAdapter(toadlineAdapter);
// remove below line
//   toadlineAdapter.notifyDataSetChanged();
toadlineAdapter.setClickListener(this);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

并在您添加项目时通知,例如:

YOURLIST.add(YOUROBJECT);
toadlineAdapter.notifyDataSetChanged();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多