如何为 recyclerview 填充的每个按钮设置不同的 onclick 侦听器

how to set different onclick listener for each button populated by a recyclerview

我正在修改此代码 > https://rubensousa.github.io/2016/08/viewpagercards 以适合我自己的应用程序,但正如您从源代码中发现的那样,没有方法来处理每个按钮的 onclick 事件,我的计划是为添加不同的意图每个按钮都点击了卡片视图所以请帮助我我是 noob/beginner 到 android 和 java

为此,您可以检查 recyclerview 适配器 onBindViewHolder 中按钮的 onclick 中关于按钮位置的条件。你可以像 if(position == 1) {-- do something --} , if(position == 2) {-- do other thing --} 在你的按钮点击里面使用。

您可以根据 onBindViewHolder 中的位置使用 Switch statement 进行尝试。例如:

Switch(position){
case 0:
//Button No.1
break;
case 1:
//Button No.2
break;
.....
}

您需要在下面的代码库中创建自定义适配器:

   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() 方法中。