安卓如何处理mvvm架构中的回收视图点击



我想处理我的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属性上调用演示者的方法

<?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)}"
...
...
...

我认为传递演示者不是一个好的设计,但有什么更好的方法来处理触发演示者中方法的行的点击?

IMHO一个更好的方法是像这里一样将OnItemClickListener添加到RecyclerView中,并调用

ItemClickSupport.addTo(recyclerView).setOnItemClickListener{
recycler, position, v -> 
mainPresenter.showDetail(recycler.getAdapter().getItem(position))
}

在RecyclerView的设置过程中。

相关内容

  • 没有找到相关文章

最新更新