【问题标题】:Prevent a View inside a single Item in Recycler View to get refreshed when adapter is refreshed防止刷新适配器时刷新 Recycler View 中单个项目内的视图
【发布时间】:2017-02-08 09:18:49
【问题描述】:

我有一个 Recycler 视图,其中单行包含多个视图,包括视频、统计信息和一个按钮。

该按钮用于增加该项目的类似统计值,并使用该位置的 notifyItemChange 更新我的适配器。

我的问题是,当该行刷新并更新我的统计信息时,视频将重置,我将不得不重新从头加载数据。

我想要的是 Facebook 应用程序,用户在其中为单个行项目添加情感,但视图(视频)不会刷新,只有某些项目会刷新,例如情感统计信息。

【问题讨论】:

    标签: android android-layout android-recyclerview android-view android-adapter


    【解决方案1】:

    你应该考虑使用

    void notifyItemChanged (int position,Object payload)
    

    并在

    中捕获有效载荷
    void onBindViewHolder (VH holder,int position, List<Object> payloads)
    

    根据解析入的payloads,可以刷新ViewHolder中的view的一部分

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List<Object> payloads) {
        if(payloads == null || payloads.isEmpty()) {
            onBindViewHolder(holder, position);//your normal method
        }
        else {
            //partial refresh
        }
    }
    

    【讨论】:

    • 我在回收站视图中使用了 notifyItemChange(position, "payload data"), disabled item animator,但是仍然没有调用带有负载的 onBindViewholder 方法,它只调用了没有负载的 onBindViewHolder。有什么我想念的吗?
    • 你什么时候给notifyItemChange打电话的?如果你在setAdapter之后立即使用它是行不通的
    • @Karate_Dog 如果你想在setAdapter 之后使用它,你可以将调用包装到recyclerview.post()
    • 我在视图支架内按下按钮后立即调用了notifyItemChanged,但我在适配器类中调用它。类似void updateView(int position) { this.notifyItemChanged(position, new Object()) }
    【解决方案2】:

    您必须使用有效载荷。这意味着,当通知适配器数据集更改时,您还传递了有效负载,并且此有效负载被传递到适配器内的适当回调,您可以在其中决定哪些视图需要失效。

    adapter.notifyItemChanged(position, payload); // payload is an Object
    

    您将在适配器的onBindViewHolder 中收到此有效负载:

    public void onBindViewHolder(HelloViewHolder holder, int position, List<Object> payload) {
            // decide what to update based on the payload
    }
    

    您可以查看this 为例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      相关资源
      最近更新 更多