#java #android #android-recyclerview #adapter #onclicklistener
Вопрос:
Это мой класс адаптера, который содержит мой прослушиватель onClick, где я хочу, чтобы он открывал различные действия в зависимости от элемента, щелкнутого в представлении переработчика. Кажется, я не могу реализовать метод, который бы справился с этой задачей.
//DATA BOUND TO VIEWS
@Override
public void onBindViewHolder(MyHolder holder, int position) {
//BIND DATA
holder.ProductCategory.setText(products.get(position).getProductCategory());
holder.ProductImage.setImageResource(products.get(position).getProductImage());
//IMPLEMENT CLICK LISTENER
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
//i get errors when i try to implement in this method
}
});
}
Ответ №1:
Вы можете установить прослушиватель щелчков в itemView
свой класс держателя следующим образом :
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Place your logic to open diffrent activity based on holder.getAdapterPosition()
}
});
И поместите логику открытия вашей активности в метод onClick (). используется holder.getAdapterPosition()
для позиционирования текущего вида
Ответ №2:
На самом деле, я решил проблему, просто добавив операторы «если еще», которые указывали, какое действие следует предпринять, когда элемент в представлении переработчика щелкает на основе его позиции в списке.
//DATA BOUND TO VIEWS
@Override
public void onBindViewHolder(MyHolder holder, int position) {
//BIND DATA
holder.ProductCategory.setText(products.get(position).getProductCategory());
holder.ProductImage.setImageResource(products.get(position).getProductImage());
//IMPLEMENT CLICK LISTENER
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
// this is the solution
if(position == 0){
//first item clicked
Intent intent = new Intent(c, CartWeb.class);// what happens when an
// item is clicked
c.startActivity(intent);
}else if(position == 1){
//second item clicked
Intent intent = new Intent(c,Options.class);
c.startActivity(intent);
}
}
});
Ответ №3:
внедрите прослушиватель щелчков в onCreateVHolder
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
// here implement which you want onItem click
}
}
});