У меня есть файл макета, в котором у меня есть несколько файлов с таким же файлом макета, как показано ниже.Как написать обычный onclicklistener для того же множественного включения в привязке данных
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="row1Data"
type="com.desaidr.testapp.RowDetails" />
<variable
name="row2Data"
type="com.desaidr.testapp.RowDetails" />
<variable
name="row3Data"
type="com.desaidr.testapp.RowDetails" />
<variable
name="row4Data"
type="com.desaidr.testapp.RowDetails" />
<variable
name="row5Data"
type="com.desaidr.testapp.RowDetails" />
</data>
<LinearLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/row_1"
layout="@layout/include_row_details"
app:rowDetails="@{row1Data}"/>
<include
android:id="@+id/row_2"
layout="@layout/include_row_details"
app:rowDetails="@{row2Data}"/>
<include
android:id="@+id/row_3"
layout="@layout/include_row_details"
app:rowDetails="@{row3Data}"/>
<include
android:id="@+id/row_4"
layout="@layout/include_row_details"
app:rowDetails="@{row4Data}"/>
<include
android:id="@+id/row_5"
layout="@layout/include_row_details"
app:rowDetails="@{row5Data}"/>
</LinearLayout>
</layout>
ниже включаемый файл макета как
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="rowDetails"
type="com.desaidr.testapp.RowDetails" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txt_rot_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={rowDetails.title}"/>
</LinearLayout>
</layout>
Я хотел бы иметь общий onCLickListener
для всех тех, кто TextView внутри моего включаемого файла.
Ниже мой Activity
код
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ActivityMainBinding mBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mBinding.row1.txtRowTitle.setOnClickListener(this);
mBinding.row2.txtRowTitle.setOnClickListener(this);
mBinding.row3.txtRowTitle.setOnClickListener(this);
mBinding.row4.txtRowTitle.setOnClickListener(this);
mBinding.row5.txtRowTitle.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.txt_row_title:
//TODO I am getting all my click here but how would differentiate which include is responsible for this click listener
break;
}
}
}
Я получаю нажмите слушающие спины вызова в моем onClick
метода, но как бы я дифференцироваться, которые включают в себя отвечают за этот клик. Поскольку я получаю одинаковый идентификатор каждый раз для клика.
У меня может быть отдельный прослушиватель кликов для всего текста. Но есть ли способ добиться успеха в одном прослушивателе кликов.
для всех остальных идентификаторов строк для этого текстового представления будет одинаковым. поэтому он будет идти первым, если только. –
Я не думаю, что так .. это «binding.row1» будет отличаться для всех. – Meenal
thaqt - это то, что я говорю. Если у вас есть код ccode, о котором вы упоминали, вы всегда будете получать cllback в своем первом, если. Попытайтесь изменить тост-сообщение, которое вы узнаете. –