android - 从回收站视图中单击的项目中获取价值
问题描述
我有一个项目清单。这些数据是从 API 接收的,然后通过回收视图列出。这就是现在的样子:https ://imgur.com/a/h4mYXD6
当我在其中一个项目上按下心脏时,我想接收来自该特定项目的数据。我不确定如何做到这一点。现在我已经为心脏图标创建了一个监听器,但现在我被卡住了。我想获取包含名称、pictureURL 和过期日期的数据。
我有一个适配器,我在其中将我的数据与视图绑定。这是 onCreateViewHolder:
@Override
public FoodViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//inflating and returning our view holder
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.layout_food, parent, false);
return new FoodViewHolder(view);
}
这是我的 OnBindViewHolder 方法:
@Override
public void onBindViewHolder(FoodViewHolder holder, int position) {
//getting the product of the specified position
Food food = foodList.get(position);
holder.heart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
switch (v.getId()) {
case R.id.heart:
//what code do i write here???
break;
}
}
});
这是正确的方法吗?我从这里去哪里?
解决方案
要在侦听器中获取项目,您可以使用getAdapterPosition
ViewHolder:
Food clickedFood = foodList.get(holder.getAdapterPosition());
有关更多信息,请参阅文档:https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ViewHolder.html#getAdapterPosition()
然后,您可以访问 的字段和方法clickedFood
以获取特定的数据饼。
推荐阅读
- python - 如何在实例级别模拟 Python 属性?
- bash - 无法通过从 bash 调用 perl oneliner 来比较两个版本字符串
- javascript - GTM/GA 和通过检查 GDPR cookie 匿名(或不匿名)
- oracle - 是否可以在存储过程中运行 sqlplus 文件?
- arrays - 将 2 行输入读入 2 个数组
- r - 在一个循环中绑定多个数据帧
- angular - 如何在角度测试中检查从管道返回的数组的长度?
- linux - 是否已编译 X11 c 程序,出现未定义的引用错误,需要哪些库?
- java - 如何调用菜单抽屉上的片段?
- sql - 更新数据库值时的 SQL 语法错误