Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何在mvvm架构中处理recyclerview点击_Android_Mvvm_Android Recyclerview_Android Databinding_Android Mvvm - Fatal编程技术网

Android如何在mvvm架构中处理recyclerview点击

Android如何在mvvm架构中处理recyclerview点击,android,mvvm,android-recyclerview,android-databinding,android-mvvm,Android,Mvvm,Android Recyclerview,Android Databinding,Android Mvvm,我想处理我的recyclerview行中的单击,并将我的演示者当前传递给我的viewholder绑定 演示者界面: interface IMainPresenter{ public void showDetail(Pojo pojo); } 持证人: class ViewHolder(itemView: View, val parent: ViewGroup?, private val binding: ListMainBinding) : RecyclerView.ViewHolder(

我想处理我的recyclerview行中的单击,并将我的演示者当前传递给我的viewholder绑定

演示者界面:

interface IMainPresenter{
  public void showDetail(Pojo pojo);
}
持证人:

class ViewHolder(itemView: View, val parent: ViewGroup?, private val binding: ListMainBinding) : RecyclerView.ViewHolder(itemView) {
            fun bind(pojo: Pojo, mainPresenter: IMainPresenter) {
                binding.pojo = pojo
                binding.mainPresenter = mainPresenter
                binding.executePendingBindings()
            }
        }
在我的布局中,我在onClick属性上调用presenter的一个方法

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <import type="android.view.View" />

        <variable
            name="mainPresenter"
            type="com.noisyninja.androidlistpoc.views.main.IMainPresenter" />

        <variable
            name="pojo"
            type="com.noisyninja.androidlistpoc.model.Pojo" />
    </data>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/black"
            android:onClick="@{(view) -> mainPresenter.showDetail(pojo)}"
            ...
            ...
            ...


我认为更好的方法是向RecyclerView-like添加
OnItemClickListener
,并调用

ItemClickSupport.addTo(recyclerView).setOnItemClickListener{
        recycler, position, v -> 
        mainPresenter.showDetail(recycler.getAdapter().getItem(position))
}
在设置RecyclerView时。

为什么“通过演示者”不是一个好的设计?