Я устанавливаю cardView
цвет фона элемента для выбранного элемента на моем адаптере. Моя логика работает отлично. Тем не менее, я также хочу прослушивать клики в одном из моих действий, чтобы я мог выполнить операцию при нажатии на элемент. Поэтому я реализовал интерфейс для прослушивания событий щелчка.
Однако, похоже, что мой метод адаптера переопределяет мою активность, поскольку я получаю itemClickedListener
только от adapter
. Как мне обеспечить, чтобы они проходили одновременно, чтобы я мог выполнить свою. операции над моей деятельностью в качестве выбранных элементов?
Интерфейс
public interface ItemClickListener {
void onItemClick(View view, int position);
}
Класс адаптера
@Override
public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position) {
//change background color when item clicked
if(row_index ==position){
holder.mParentView.setCardBackgroundColor(Color.parseColor("#99989B"));
} else {
holder.mParentView.setCardBackgroundColor(Color.parseColor("#424242"));
}
Держатель для просмотра Класс
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private CardView mParentView;
private TextView mTitle, mTime;
private View mView;
public ViewHolder(View itemView) {
super(itemView);
mView = itemView;
mParentView = mView.findViewById(R.id.parentView);
itemView.setOnClickListener(this);
}
public void setTitle(String text){
mTitle = mView.findViewById(R.id.title);
mTitle.setText(text);
}
public void setTime(String text){
mTime = mView.findViewById(R.id.time);
mTime.setText(text);
}
@Override
public void onClick(View v) {
if (itemClickListener != null) {
itemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
//interface implementation to listen for clicks in Activity.
private ItemClickListener itemClickListener;
public void setOnItemClickListener(ItemClickListener mItemClickListener) {
this.itemClickListener = mItemClickListener;
}
}
Активность
do something when recycler view is clicked.
recyclerViewAdapter.setOnItemClickListener((view, position) -> {
onBackPressed();
//not working
})