簡體   English   中英

如何為recyclerview填充的每個按鈕設置不同的onclick偵聽器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM