RecyclerView 并获取 ItemId

RecyclerView and get ItemId

我正在使用 RecyclerViewItemTouchHelper 实现滑动删除。在我的 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() 来解决他的问题。