如何在MVP风格的View和Adapter之间进行通信

时间:2016-10-06 15:23:24

标签: android android-recyclerview

我用Android Architecture Blueprints

学习MVP风格

在此示例中,Adapter(RecyclerViewAdapter等)属于View。 片段表示视图在MVP和适配器中放置在视图中作为内部类。

在这种情况下,View和Adapter之间的通信是通过使用回调接口完成的。

    public TasksAdapter(List<Task> tasks, TaskItemListener itemListener) {
        setList(tasks);
        mItemListener = itemListener;
    }

我经常回调沟通有点困惑。

本质量保证中的许多反应表明了这一问题。

Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?

public class ReactiveAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    String[] mDataset = { "Data", "In", "Adapter" };

    private final PublishSubject<String> onClickSubject = PublishSubject.create();

    @Override 
    public void onBindViewHolder(final ViewHolder holder, int position) {
        final String element = mDataset[position];

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               onClickSubject.onNext(element);
            }
        });
    }

    public Observable<String> getPositionClicks(){
        return onClickSubject.asObservable();
    }
}

有一些方法。

  • 回调(回调,监听器和观察者)
  • 使用RxJava观察
  • 使用RxJava发布子主题
  • 活动巴士
  • 将视图或演示者传递给适配器的构造函数

哪种方式正确?我该怎么做?

0 个答案:

没有答案