Мой вопрос заключается в том, что я хочу, чтобы представление переработчика отвечало на щелчок по всему представлению, а не на отдельные щелчки по каждому элементу, имеющемуся в представлении переработчика.
<TextView
android:id="@+id/tv_amount_reviews"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> viewModel.handleClick()}"
android:textSize="12sp"
android:text="Title"
app:layout_constraintStart_toStartOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_event_reviews"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="@dimen/vertical_padding"
android:onClick="@{() -> viewModel.handleClick()}"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
Я хочу, чтобы и заголовок, и представление рециркулятора выполняли одинаковую функцию handleClick
когда любой из них является щелчком. Заголовок TextView
работает, но RecyclerView
не обрабатывает щелчки. Как я могу это сделать?
Примечание: я не хочу оборачивать оба вида в один макет, так как это усложнит весь макет
Если оба вида имеют одинаковую функцию, вы можете добавить это к вашей модели
public handleClick() {
}
Затем вы можете добавить слушателя в вашей модели, например
private OnClickListener onClickListener = null;
interface OnClickListener{
void onClick();
}
public handleClick() {
if(onClickListener != null) onClickListener.onClick();
}
public void setOnClickListener(OnClickListener onClickListener){
this.onClickListener = onClickListener;
}
Если вы хотите проверить, по какому виду щелкнули, вам нужно изменить строку ниже, а затем добавить параметр представления в handleClick(View v)
@{() -> viewModel.handleClick()}
to
@{(v) -> viewModel.handleClick(v)} // Don't forget to add a View argument to handleClick
handleClick(View view) {
switch(view) {
case R.id.tv_amount_reviews:
//handle textview click;
break;
case R.id.rv_event_reviews:
//handle recycler view click;
}
}