android - 如何将 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();
}
解决方案
在 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();
}
});
}
推荐阅读
- c++ - GLFW 努力渲染 1000 个对象
- foreach - Neo4j CQL:对于每个节点,返回最旧的相关节点 X
- git - 执行变基时文件名中的 Git 敏感大小写
- python - Discord.py on_member_join 不起作用,没有错误消息
- java - Listview SimpleCursorAdapter中的SetVisibility按钮?
- assembly - MIPS 程序显示 3 个用户输入的整数中的最小值,不记录负数
- authentication - 如何做类似的事情
在 applicationHost.config 中将 sslFlags 应用于“/”但虚拟目录中没有任何内容? - powershell - 如何在 PowerShell 中将字符串值转换为类型“System.Int32”
- javascript - 无法在嵌套函数中打印正确的 innerHTML 消息
- php - 我在用 php 和 mysqli 解密时遇到问题