RecyclerView 适配器中的空侦听器

达约·贾约

Android Studio RecyclerView 自定义适配器中的侦听器返回 null。

这是界面

  private OnItemClickListener mlistener;

    public interface OnItemClickListener{
        void onItemClick(int position, Boolean paid);
    }
    public void setOnItemClickListener(OnItemClickListener listener){
        mlistener = listener;
    }

这是带有侦听器的视图持有者。这旨在将布尔值传递给主要活动。

 public CartViewHolder(View itemView, ArrayList<Shift> shifts, OnItemClickListener listener) {
            super(itemView);

         
            paid = itemView.findViewById(R.id.due_back_paid);
            containerView = itemView.findViewById(R.id.container);


            paid.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                    if (listener !=  null){
                        int position = getAdapterPosition();
                        if(position != RecyclerView.NO_POSITION){
                            listener.onItemClick(position, isChecked);
                        }
                    }
                }
            });


            containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Shift current = (Shift)containerView.getTag();
                    Intent intent = new Intent(v.getContext(), ViewShiftActivity.class);
                    intent.putExtra("thisShift", current);
                    intent.putExtra("shifts", shifts);
                    v.getContext().startActivity(intent);

                }
            });


        }


    }

    public LoadAdapter(ArrayList<Shift> shifts){
        shiftList = shifts;
    }

    @NonNull
    @Override
    public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shift_row, parent, false);
        CartViewHolder mvh = new CartViewHolder(view, shiftList, mlistener);
        return mvh;
    }

我在其他项目中使用过此代码并且它有效。我似乎无法弄清楚我错过了什么。

我被要求包括这项活动。以下是这段代码。我还没有向这里的 onItemClick 添加任何代码。等待侦听器工作。

public class EditShiftActivity extends AppCompatActivity implements LoadAdapter.OnItemClickListener{

    private ArrayList<Shift> shifts;
    private RecyclerView lRecyclerView;
    private LoadAdapter lAdapter;
    private RecyclerView.LayoutManager lLayoutManager;
    private View view;
    private FloatingActionButton fab;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_shift);

        Intent intent = getIntent();
        shifts = intent.getParcelableArrayListExtra("shifts");

        fab = findViewById(R.id.add_shift_edit);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(EditShiftActivity.this, AddShiftActivity.class);
                intent1.putExtra("shifts", shifts);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                v.getContext().startActivity(intent1);
            }
        });
        
        lRecyclerView = findViewById(R.id.shift_recycler);
        lLayoutManager = new LinearLayoutManager(this);
        lAdapter = new LoadAdapter(shifts);
        lRecyclerView.setLayoutManager(lLayoutManager);
        lRecyclerView.setAdapter(lAdapter);
    }
    
    @Override
    public void onItemClick(int position, Boolean paid) {

    }
}
朴雅卡·拉杰普特

在您的代码中添加以下行 -

lAdapter = new LoadAdapter(shifts);
lAdapter.setOnItemClickListener(this);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RecyclerView,适配器,单击侦听器和AsyncTask

如何在 recyclerview 适配器上检查空侦听器?

如何在 OnSuccessListener 中的 recyclerview 适配器中传递侦听器

将单击侦听器添加到通用RecyclerView适配器

RecyclerView() 适配器

RecyclerView适配器中的onBackPressed()

从适配器中刷新整个RecyclerView

在RecyclerView适配器中显示FragmentDialog

在recyclerview适配器中更改项目

在RecyclerView适配器中显示sharedpreference

RecyclerView适配器中的LayoutInflater

RecyclerView适配器中的导航组件

模仿RecyclerView适配器中的“ onActivityResult”

从适配器更新recyclerview

Firebase在Android的适配器中添加侦听器

带有 recyclerview 适配器的空点异常

在 RecyclerView 的自定义适配器中膨胀时获取空指针异常

使用Recyclerview适配器作为微调器的适配器

如何为 RecyclerView 适配器设置监听器?

如何获取在 recyclerview 适配器中尚不可见的布局管理器的子项?

适配器中的onScroll RecyclerView计时器值更改

如何在Firebase回收器适配器中实现recyclerview ItemClickListener()?

从活动中获取数据到RecyclerView适配器中?

如何在片段中调用RecyclerView适配器的方法

如何在 recyclerview 适配器中与 Viewmodel 交互?

RecyclerView:未连接适配器;跳过片段中的布局

如何从Android中的RecyclerView适配器获取物品

在 recyclerview 适配器中获取用户 uid

在RecyclerView的适配器中获取上下文