我们如何在 Cards recyclerView 中获取 Onclick 按钮值

How we fetch Onclick Button value in Cards recylerView

它显​​示空对象错误。 当我在卡片 RecylerView

上获取按钮值时
Process: com.softedge.visioneering.tfd, PID: 9884
                  java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
                      at com.softedge.visioneering.tfd.adapters.MyOrdersAdapter$MyOrdersViewHolder.onClick(MyOrdersAdapter.java:138)
                      at android.view.View.performClick(View.java:5609)

This Is My Adapter and Button Code:

public class MyOrdersViewHolder extends RecyclerView.ViewHolder {

        public TextView txtOrderDescription, txtOrderQuantity, txtOrderStatus, txtOrderDate, txtExpectedDate, txtCreatedBy,txtOrderStatus_Per;
String check;
        public Button update_btwn;
        public MyOrdersViewHolder(View convertView) {
            super(convertView);
            update_btwn=(Button) convertView.findViewById(R.id.status_update_button);

            final FragmentManager fragmentManager = ((FragmentActivity) context).getSupportFragmentManager();

            update_btwn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     id = (Integer) update_btwn.getTag();

                   fragmentManager.beginTransaction().replace(R.id.container, new Status_update_Fragment().newInstance()).addToBackStack(" ").commit();
                    //((FragmentActivity) context).getSupportFragmentManager().beginTransaction().
                    // remove(((FragmentActivity) context).getSupportFragmentManager().findFragmentById(R.id.container)).commit();

                }

            });

我想对按钮执行操作。 哪个在 Cards RecylerView

你在按钮上设置标签了吗?

您可以调用 .setTag() 或 xml android:tag=""

此外,您不应该在视图持有者的构造函数中设置点击侦听器,在 onBindViewHolder 中设置。

  1. 在适配器的 onBindViewHolder 方法中使用 setTag()

    @Override
    public void onBindViewHolder(myViewHolder viewHolder, int position) {
        viewHolder.mCardView.setTag(position);
    }
    

其中 mCardViewmyViewHolder class 中定义。

private class myViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
           public View mCardView;

           public myViewHolder(View view) {
               super(view);
               mCardView = (CardView) view.findViewById(R.id.card_view);

               mCardView.setOnClickListener(this);
           }
       }
  1. 在您的 OnClickListener 实施中使用 getTag()

    @Override
    public void onClick(View view) {
            int position = (int) view.getTag();           
    
        //display toast with position of cardview in recyclerview list upon click
        Toast.makeText(view.getContext(),Integer.toString(position),Toast.LENGTH_SHORT).show();
    }