在异步回调之后,如何查看Recyclerview适配器中的项目是否可见



我想更新一个呼叫异步调用的项目 onBindViewHolder中的服务器API。我以位置 位置将项目发送到回调中。响应呼叫在20秒内到达回调Funcion。回到回调函数返回响应和位置。然后我致电notifyItemChanged(pos, response)。内部有效载荷onBindViewHolder我在该位置及其视图上更新项目。问题是,如果异步请求需要20秒,并且用户将通过RecyclerView迅速滚动,则会更新错误的项目View,因为位置的该视图可能会取消或可以从列表中绑定到其他项目。

有什么方法可以如何跟踪哪个位置未绑定的位置取消请求?创建适配器后,我必须更新此一个信息,因为如果我之前这样做,用户将在将近2分钟内看到任何回收库的项目,直到我的列表准备就绪。(只有这个电话花了这么长时间(。

我不会以上下文的身份传递该位置。我会通过标识符。可能是内部整数作为ID或其他东西。然后,您可以轻松地确定屏幕上当前可见哪个ID,并查看该列表是否包含CalBack的ID。

我不确定您的问题,但是您可以直接在适配器中使用项目。那你做:

Adapter adapter = new BaseAdapter(newDataset);
recyclerView.setAdapter(adapter);
recyclerView.notifyDataSetChanged();

否则,如果您真正在视图而不是数据集上工作,则可以做到这一点:在您的适配器中:

  • 创建视图数组
  • 创建自定义函数视图getViewAtpos(int pos(
  • 检查您的视图是否在您当前的scrollview(此处(
  • 中可见

相关内容

最新更新