RecyclerView 并获取 ItemId
RecyclerView and get ItemId
我正在使用 RecyclerView
和 ItemTouchHelper
实现滑动删除。在我的 onSwiped
函数中,我调用我的服务以使用 API 请求删除元素,但为此我需要适配器给我元素的 ID。
我重写了适配器
的 getItemId()
函数
@Override
public long getItemId(int position) {
return dataSet.get(position).getId();
}
但是当我在我的onSwiped
函数中使用它时
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
AddBaseService addBaseService = AddBaseService.sharedInstance();
long baseId = viewHolder.getItemId(viewHolder.getAdapterPosition());
addBaseService.deleteBase(String.valueOf(baseId));
我在 getAdapterPosition
行收到一个错误
getItemId() in ViewHolder cannot be applied to (int)
虽然 getAdapterPosition
应该是 return 一个整数 :/
我认为 viewHolder.getItemId() 期望 long 而不是 int
编辑:
这里有两个链接可以帮助您解决问题:
- What is the intent of the methods getItem and getItemId in the Android class BaseAdapter?
OP 使用:adapter.getItemId(viewHolder.getAdapterPosition());
而不是 viewHolder.getItemId()
来解决他的问题。
我正在使用 RecyclerView
和 ItemTouchHelper
实现滑动删除。在我的 onSwiped
函数中,我调用我的服务以使用 API 请求删除元素,但为此我需要适配器给我元素的 ID。
我重写了适配器
getItemId()
函数
@Override
public long getItemId(int position) {
return dataSet.get(position).getId();
}
但是当我在我的onSwiped
函数中使用它时
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
AddBaseService addBaseService = AddBaseService.sharedInstance();
long baseId = viewHolder.getItemId(viewHolder.getAdapterPosition());
addBaseService.deleteBase(String.valueOf(baseId));
我在 getAdapterPosition
行收到一个错误
getItemId() in ViewHolder cannot be applied to (int)
虽然 getAdapterPosition
应该是 return 一个整数 :/
我认为 viewHolder.getItemId() 期望 long 而不是 int
编辑:
这里有两个链接可以帮助您解决问题:
- What is the intent of the methods getItem and getItemId in the Android class BaseAdapter?
OP 使用:adapter.getItemId(viewHolder.getAdapterPosition());
而不是 viewHolder.getItemId()
来解决他的问题。