如何覆盖RecyclerView Adapter的notifyDataSetChanged,notifyItemChanged ...方法

Hoa*_* Ha 5 android recycler-adapter android-recyclerview

作为标题.我正在编写一个支持多选模式的自定义RecyclerView.我需要跟踪每个项目的选定/未选择状态.因此,在RecyclerView的数据大小发生变化之后.我想更新跟踪状态列表的大小.但我不知道在哪里重写方法:notifyDataSetChanged,notifyItemChagned ....

mik*_*enz 18

正如之前的答案已经正确陈述.你不能因为那些方法是最终的.

实现FastAdapter时我遇到了同样的情况

我想出的唯一解决方案是将这些方法命名为略有不同.notifyDataSetChanged- > notifyAdapterDataSetChanged https://github.com/mikepenz/FastAdapter/blob/develop/library/src/main/java/com/mikepenz/fastadapter/FastAdapter.java#L1354

public void notifyAdapterDataSetChanged() {
    //... your custom logic
    notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

对于库来说,改进关于这一点的文档是非常重要的,但它是目前唯一的解决方案.


Kis*_*ava 6

你不能,因为它final这里RecyclerView.Adapter 看到

您可以override使用BaseAdapterListView

@Override
public void notifyDataSetChanged() {
    // TODO Auto-generated method stub
    super.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)


Geo*_*iam 5

将适配器注册为 RecyclerView.Adapter 的观察者。

yourRecyclerView.getAdapter().registerAdapterDataObserver(new AdapterDataObserver() {
    @Override
    public void onChanged() {
        // Do nothing
    }
});
Run Code Online (Sandbox Code Playgroud)