首页 > 解决方案 > 如何将 id 从回收站视图传递到片段?

问题描述

我正在尝试将 id 从我的recyclerview项目传递到片段,但我有error: void com.example.taskapprealm.database.IRecyclerItemData.itemData(int)一个null对象引用。空引用在editButton侦听器的回调 2 内。在 editButton 内部,我有两个接口的两个回调。一个调用片段,第二个应该将 id 传递给片段。我不知道出了什么问题。

适配器中的 ClickListener:

holder.editButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           int position = holder.getAdapterPosition();
           callback.onEditClick(position);
           callback2.itemData(position);

           Toast.makeText(v.getContext(), "TEST " + position, Toast.LENGTH_LONG).show();
       }
   });

适配器中的构造函数:

 public MainAdapter(List<Task> tasks, IRecyclerItemClickListener callback, IRecyclerItemData callback2) {
   this.tasks = tasks;
   this.callback = callback;
   this.callback2 = callback2;

}

界面:

    public interface IRecyclerItemData {

    void itemData(int position);
}

片段中的方法:

@Override
public void itemData(int position) {
    Task task = tasks.get(position);
    taskID = task.getId();

}

标签: androidandroid-recyclerview

解决方案


在 onBindViewHolder 方法中编写 OnClick 代码

@Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {

        holder.editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                callback.onEditClick(position);
                callback2.itemData(position);

                Toast.makeText(v.getContext(), "TEST " + position, Toast.LENGTH_LONG).show();
            }
        });
    }

推荐阅读