从Viewholder通知RecyclerView适配器的最佳方式?

时间:2017-04-16 04:28:43

标签: android android-recyclerview android-viewholder

我有一个包含多个项目视图类型的RecyclerView,因此它们被分成单独的ViewHolder类。之前,当所有ViewHolder与RecyclerView Adapter位于同一类时,我可以在单击或删除项目时直接更新适配器。但是,我将ViewHolders分成不同的类以更好地组织代码。现在,我无法直接更新我的RecyclerView适配器。以下哪种解决方案是从ViewHolder与我的适配器进行通信的最佳方式?如果有比我列出的解决方案更好的解决方案,请提出建议!

  1. 将接口与Callback侦听器一起使用。请记住,可能有5-10种不同的视图类型,因此这种方法需要5-10个接口?
    1. 使用Eventbus库,例如Greenrobot的Eventbus。
  2. 接口或事件总线解决方案真的是最好的方法吗?肯定有一种更好的方法在视图和适配器之间进行通信!

1 个答案:

答案 0 :(得分:7)

我通常在活动或片段中保存对适配器的引用。 ViewHolders可以作为内部类放在Adapter中,也可以放在单独的包中。您可以使用一个界面与视图持有者进行交互。您只需在活动或片段中实现它。例如:

final MyAdapter adapter = new MyAdapter(new MyAdapter.MyInterface() {
    @Override
    public void someEvent() {
        adapter.notifyDataSetChanged();
    }
});

在你的活动或片段中的某个地方:

{{1}}