【发布时间】:2023-02-23 06:39:59
【问题描述】:
我试图从 recyclerview 中删除该项目,但在删除它后总是删除最后一个位置,我不明白为什么它没有删除我删除的确切位置
如果有人能帮我解决这个问题
这是我的代码
holder.items_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
item_card.setVisibility(View.VISIBLE);
item_delete_layer.setVisibility(View.VISIBLE);
final String path = imageList.get(position).getPath();
SharedPreferences sharedPreferences = context.getSharedPreferences("path", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("filePath", path);
editor.apply();
}
});
item_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
item_card.setVisibility(View.GONE);
item_delete_layer.setVisibility(View.GONE);
SharedPreferences sharedPreferences = context.getSharedPreferences("path", Context.MODE_PRIVATE);
String path = sharedPreferences.getString("filePath","");
File fdelete = new File(path);
if (fdelete.delete()){
imageList.remove(position);
notifyDataSetChanged();
Toast.makeText(context, "File deleted", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "Can't delete file", Toast.LENGTH_SHORT).show();
}
}
});
item_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
item_card.setVisibility(View.GONE);
item_delete_layer.setVisibility(View.GONE);
SharedPreferences sharedPreferences = context.getSharedPreferences("path",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.apply();
}
});
【问题讨论】:
-
您只需要从在 recyclerview 中传递的列表中删除项目,然后使用 notify 方法刷新 recyclerview。
-
使用 notifyItemRemoved 而不是 notifyDatasetChanged
-
@HaseebHassanAsif 它显示了同样的问题
-
@AishaKumari 请分享您的适配器代码,以便我们进一步了解问题。
标签: java android android-recyclerview