【问题标题】:Recycler view reach on top after add some data on scroll in adapter在适配器中添加一些滚动数据后,回收器视图到达顶部
【发布时间】:2016-11-10 09:34:03
【问题描述】:

我已经添加了 notifyDataSetChange ,如果有人在代码中看到任何错误,它仍然会到达回收站视图的顶部,请回复。我正在滚动表单服务器上加载数据,并将其设置在底部的适配器中,这里 VegList 是一个列表,其中包含旧数据和新添加的数据。

我已经看过所有相关的无尽回收者视图,所以不需要这种类型的建议,不新鲜。

【问题讨论】:

  • recycleview 最重要的用途之一是我们可以单独刷新视图。通过调用 notifyDataSetChanged 您正在刷新整个视图.. 使用 vegAdaper.notifyItemInserted(temp.size() -1);而不是 notifyDataSetChanged。此外,您每次都在创建一个新适配器,即非常糟糕..

标签: android android-recyclerview


【解决方案1】:

您遇到此问题是因为每次调用 loadmore 时您都在创建一个新适配器。

你需要像这样重写代码。

初始化适配器 onCreate 像这样

vegAdaper = new VegAdapter(this,vegList); 
recycleView.setAdapter(vegAdapter);

请从临时数组列表创建中删除所有代码到 vegAdaper.notifyDatasetChanged()

并将其更改为这一行

  vegAdaper.notifyItemInserted(vegList.size() -1);    // this will notify the new items in vegList.. Not the entire view.

另外请发布实际代码而不是图片。

【讨论】:

  • 我不能在 vegAdapter 中使用 VegList,因为我在 adpater 的构造函数中传递了 ArrayList 参数,而 VegList 是一个 List 类型变量
  • 而且我已经按照你的定义通知ItemInserted 仍然没有成功
  • 在这种情况下,您可以轻松地将 vegList 更改为 arralist 对,,?你传递了什么而不是 vegList..?
  • 谢谢你是对的,我删除了每次创建新适配器的代码,即使我仍然使用 notifyDataSetChange(),问题也得到了解决。
【解决方案2】:

你可以在调用 notifyDataSetChanged() 之前获取位置。之后你可以调用 setSelection(position);将列表视图或其他任何内容返回到原始位置。

【讨论】:

  • 这是一个回收站视图而不是网格视图
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
相关资源
最近更新 更多