我有这个布局文件。
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data class="ItemDataBinding">
<variable
name="item"
type="com.example.data.Item" />
<variable
name="onItemClickListener"
type="com.example.OnItemClickListener" />
<variable
name="onLongShoppingListClickListener"
type="com.example.OnLongItemClickListener" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{(v) -> onItemClickListener.onItemClick(item)}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_text_view"
android:text="@{item.getName()}"/>
</RelativeLayout>
</layout>
有了一个单次点击的监听器,它就能正常工作。我试过了。
android:onClick="@{(v) -> onItemClickListener.onItemClick(item), onLongItemClickListener.onLongItemClick(item)}">
但是没有用 如何在同一视图上添加两个监听器?
你必须创建自己的 ClickHander
并用于 XML
像下面这样。
<data>
<variable
name="item"
type="com.example.data.Item" />
<variable
name="handler"
type="embitel.com.databindingexample.helper.ClickHander" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onLongClick="@{(v) -> handler.onLongClickOnHeading(v, item)}"
android:onClick="@{(v)->handler.onItemClicked(v,item)}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_text_view"
android:text="@{item.getName()}"/>
</RelativeLayout>
您的 ClickHandler
阶层
public class ClickHander {
public void onItemClicked(View v, Item item) {
Context context = v.getContext();
// Your code
}
// For long click
public void onLongClickOnHeading(View v, Item item) {
Context context = v.getContext();
// Your code
}
}
在您的网站上设置Binding Activity
或 Fragment
binding.setHandler(new ClickHander());