Android RecyclerView局部刷新数据

RecyclerView局部刷新数据在项目中,目前我们常用RecyclerView来加载列表数据,而刷新数据时,我们常常用notifyDataSetChanged();来刷新全部列表数据,用notifyItemChanged(position);来刷新列表中某一项的数据,正常情况下都是ok的。但是遇到带图片的列表,这样的刷新方式就很糟糕了。比如列表中带图片、浏览数,点赞量等等一系列数据。现在我只想刷新浏览量,用上面的方法就会发现,每刷新一次,图片就会闪烁一下。这样不仅浪费资源,用户体验也很不好。怎么处理这
摘要由CSDN通过智能技术生成

RecyclerView局部刷新数据

在项目中,目前我们常用RecyclerView来加载列表数据,而刷新数据时,我们常常用notifyDataSetChanged();来刷新全部列表数据,用notifyItemChanged(position);来刷新列表中某一项的数据,正常情况下都是ok的。但是遇到带图片的列表,这样的刷新方式就很糟糕了。比如列表中带图片、浏览数,点赞量等等一系列数据。现在我只想刷新浏览量,用上面的方法就会发现,每刷新一次,图片就会闪烁一下。这样不仅浪费资源,用户体验也很不好。怎么处理这种情况呢?其实RecyclerView早就为我们考虑到这种情况了。

RecyclerView的局部刷新操作

adapter适配器中,使用onBindViewHolder来进行数据的绑定设置。而我们常用的是onBindViewHolder(@NonNull MyViewHolder holder, int position),但在@Override方法中,我们还能看到onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull List payloads) 这个方法。这就是我们在局部刷新中要用到的。多出来的这个payloads参数就是用来标志刷新哪些地方的。payloads可以是任意类型,作用就是区分刷新哪些数据。

adapter中

payloads.isEmpty()为null表示全部刷新,payloads.get(0)取出用于标记的值。从下面的代码就可以看到,若payloads为null,代表设置全部数据,payloads.get(0)为follow,代表刷新关注。。。。

 @Override
 public void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull List<Object> payloads) {
   
     if (payloads.isEmpty()){
    //为null表示全部刷新
     
     }else{
   
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RecyclerViewAndroid支持库中的一个控件,用于展示大量数据列表视图。它的优势在于能够提供高效的滚动和局部刷新机制,减少了界面的更新开销,提升了用户体验。 使用RecyclerView进行局部刷新,需要使用Adapter和ViewHolder来管理数据和视图。在点击按钮后,我们可以通过以下步骤来实现局部刷新的代码: 1. 首先,确保已经创建了RecyclerView控件,并设置好LayoutManager和Adapter。 2. 在按钮的点击事件中,获取需要刷新的数据项位置。 3. 根据位置,更新数据集合中相应位置的数据。可以使用getItem()方法获取该位置的数据项,并进行修改。 4. 调用Adapter的notifyItemChanged()方法,通知RecyclerView更新指定位置的数据项。 5. 最后,通过LayoutManager的scrollToPosition()方法,将RecyclerView滚动到指定位置,保证用户能够看到被刷新的数据项。 以下是一段示例代码: ``` // 获取按钮控件 Button refreshButton = findViewById(R.id.refresh_button); // 设置按钮的点击事件 refreshButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取需要刷新的数据项位置 int position = 3; // 更新数据集合中指定位置的数据 dataList.get(position).setText("更新后的数据"); // 通知RecyclerView更新指定位置的数据项 adapter.notifyItemChanged(position); // 将RecyclerView滚动到指定位置 layoutManager.scrollToPosition(position); } }); ``` 通过以上代码,当用户点击按钮后,RecyclerView的第4个数据项会被更新,并将滚动到该位置,实现了RecyclerView局部刷新

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值