android - 需要一个关于 RecyclerView.Adapter.notifyItemChanged(int position, Object payload) 的例子

标签 android android-recyclerview payload

根据RecyclerView 文档关于方法notifyItemChanged(int position, Object payload)

Notify any registered observers that the item at position has changed with an optional payload object.

我不明白如何在此方法中使用第二个参数 payload。我搜索了很多关于“有效载荷”的文档,但一切都模棱两可。

所以,如果你知道这个方法,请给我一个清晰的例子。非常感谢。

最佳答案

如果您想更新不是所有持有人 View ,而只是部分更新,则此方法是您所需要的。

您关注的图像ViewHolder

public class ViewHolder extends RecyclerView.ViewHolder {
        public final TextView tvPlayer;
        public final TextView tvScore;

        public ViewHolder(View view) {
            super(view);
            tvPlayer = (TextView) view.findViewById(R.id.tv_player);
            tvScore = (TextView) view.findViewById(R.id.tv_score);
        }

    }

在代码中的某处调用适配器来更新 single TextView - tvScore

mRecyclerViewAdapter.notifyItemChanged(position, new Integer(4533));

[...]

onBindViewHolder(ViewHolder holder, int position, List payloads) 首先捕获回调。 如果 payloads 不符合您的要求,您必须强制调用父类(super class) super.onBindViewHolder(holder,position, payloads); 触发 onBindViewHolder(ViewHolder holder, int position) 其他情况。

     // Update only part of ViewHolder that you are interested in
     // Invoked before onBindViewHolder(ViewHolder holder, int position)
        @Override
        public void onBindViewHolder(ViewHolder holder, int position, List<Object> payloads) {
            if(!payloads.isEmpty()) {
                if (payloads.get(0) instanceof Integer) {
                    holder.tvScore.setText(String.valueOf((Integer)payloads.get(0)))
                }
            }else {
                super.onBindViewHolder(holder,position, payloads);
            }
        }

    // Update ALL VIEW holder
    @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            MItem item = mList.get(position)
            // some update
        }

关于android - 需要一个关于 RecyclerView.Adapter.notifyItemChanged(int position, Object payload) 的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33176336/

相关文章:

android - 通过蓝牙发送文件

android - Android 上的 CCClippingNode 无法正常工作

Android RecyclerView Checkbox 随机勾选

android - 滑动后如何恢复回收者 View 项目

java - Android:如何知道运行时小部件应用了哪种样式

java - 登录

java - 通过 Intent 将数据从 App 传递到 Widget 时的空指针

java - REST 服务 PUT ,xml 负载结构

http - HTTP 请求方法的负载

mule - ESB MULE 将参数传递给 java 方法