删除时未删除的文件仍显示在 Listview 中

Far*_*an 5 video android listview mediastore delete-file

我制作了一个程序,该程序使用存储在设备上的视频填充列表视图并播放它们。它还尝试使用 file.delete 函数来实现删除文件的功能。但是,使用 notifydatasetchange() 函数后,该文件仍显示在列表视图中。此外,我刚刚注意到视频文件已从 DCIM 文件夹中删除;但是,它显示在设备的图库中,但是当您单击它时,无法播放.. 这是我向用户显示对话框的部分代码,当用户单击 Yes 时,然后执行删除功能。

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    switch (which){
                    case DialogInterface.BUTTON_POSITIVE:

                         file.delete();
                         adapter.notifyDataSetChanged();
                         //list.setAdapter(adapter);
                         break;

                    case DialogInterface.BUTTON_NEGATIVE:
                        image2.setImageResource(R.drawable.play);
                        flag.setText("play");
                        //No button clicked
                        break;
                    }
                }
            };

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("This Item will be Deleted\nAre you sure?").setPositiveButton("Yes", dialogClickListener)
                .setNegativeButton("No", dialogClickListener).show();


        }// else closes 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样。有什么有用的建议请...

Jus*_*eld 1

我想我看到了问题所在。

您正在删除该文件,但实际上您需要从 ArrayListAdapter 中删除相应的 Array 元素,然后在适配器上调用 notificationDataSetChanged 。

看:

使用适配器动态更新列表视图

要强制媒体扫描仪再次运行,请参阅:

Android 文件删除在图库中留下空占位符

您还需要考虑以下因素:

通知数据集更改示例