[英]how to set different onclick listener for each button populated by a recyclerview
我正在修改此代碼> https://rubensousa.github.io/2016/08/viewpagercards以適合我自己的應用程序,但是從源代碼中可以發現,沒有方法可以處理每個按鈕的onclick事件,我的計划是為在cardviews上單擊的每個按鈕添加不同的意圖,所以請幫助我,我是android和java的菜鳥/入門者
為此,您可以檢查recyclerview適配器onBindViewHolder中按鈕onclick相對於按鈕位置的條件。 您可以在按鈕單擊內使用類似if(position == 1){-做某事-},if(position == 2){-做其他事-}。
您可以通過使用基於onBindViewHolder
位置的Switch statement
來嘗試使用它。 例如:
Switch(position){
case 0:
//Button No.1
break;
case 1:
//Button No.2
break;
.....
}
您需要在您的庫中創建自定義適配器,以下代碼為example:
public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.ViewHolder> {
Context context;
List<Category> list;
public CategoryAdapter(Context context, List<Category> list){
this.list = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.item_category, null);
return new CategoryAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
viewHolder.btnOne.setOnItemClickListener(new View.OnItemClickListener{
// do something
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
Button btnOne, btnTwo;
public ViewHolder(View view) {
super(view);
btnOne = view.findViewById(R.id.btn_one);
btnTwo = view.findViewById(R.id.btn_two);
}
}
}
生成按鈕引用,並將每個onClick偵聽器放入onBindViewHolder()方法中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.