【问题标题】:how to set different onclick listener for each button populated by a recyclerview如何为由 recyclerview 填充的每个按钮设置不同的 onclick 侦听器
【发布时间】:2018-06-29 15:20:28
【问题描述】:

我正在修改此代码 > https://rubensousa.github.io/2016/08/viewpagercards 以适合我自己的应用程序,但您可以从源代码中找到处理每个按钮的 onclick 事件的方法,我的计划是为每个单击的按钮添加不同的意图cardviews 所以请帮助我,我是 android 和 java 的菜鸟/初学者

【问题讨论】:

    标签: java android button adapter cardview


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

           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);
        
                }
            }
        
        }
        

        【讨论】:

        • 请问自定义适配器
        【解决方案4】:

        获取您的按钮引用并将每个 onClick 侦听器放入您的 onBindViewHolder() 方法中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-27
          • 1970-01-01
          相关资源
          最近更新 更多