这是我的删除代码
public void onBindViewHolder(@NonNull final favAdapter.ViewHolder holder, int position) {
holder.favText.setText(favlist.get(position).getPoetry());
holder.delbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DataBaseHandler db= Room.databaseBuilder(holder.delbtn.getContext(),
DataBaseHandler.class, "room_db").allowMainThreadQueries().build();
Dao_Class userDao= db.userDao();
userDao.delete(favlist.get(position));
favlist.remove(position);
notifyItemRemoved(position);
}
});
}
我试图获取适配器位置,但无法获取。
2条答案
按热度按时间wlwcrazw1#
您必须使用
holder.getAdapterPosition()
来处理用户点击,而不是使用position
。ViewHolder为我们提供了getAdapterPosition,它始终具有此Holder的更新适配器位置。这意味着每当您单击一个项目(ViewHolder项目)时,我们都会询问适配器其位置。因此,您将获得此项目在适配器逻辑方面的最新位置。
iq0todco2#
您必须通过应用rangeChanged方法删除项目位置和通知列表