从ListView和存储

时间:2016-05-10 19:25:03

标签: android listview android-alertdialog

我正在尝试构建一个将从ListView中删除文件的应用程序 并从存储中的文件夹中同时进行。

当我运行此应用程序时,ListView会显示该文件夹中的文件。 长按ListView中的文件会显示Toast消息 但对话框无法显示。该文件未从中删除 ListView或文件夹。

我很感激代码帮助解决这个问题。

谢谢。

这是我的代码:

    ListView lv = getListView();
    lv.setLongClickable(true);

    lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, final int position, long arg3) {

            AlertDialog.Builder alert = new AlertDialog.Builder(FileRemoveActivity.this);

            // this Title Fails to display
            alert.setTitle("Delete File");

            //  this Message Fails to display
            alert.setMessage("Are you sure you want to delete this file?");

            // this Toast 'position' value Does display
            Toast.makeText(getApplicationContext(), " " + position, Toast.LENGTH_LONG).show();

            alert.setCancelable(false);
            // the Yes button Fails to display
            alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    // compiler warning this code is an Unchecked Cast
                    ArrayAdapter<String> adapter = (ArrayAdapter<String>) arg0.getAdapter();

                    // the file at 'position' is Not removed
                    adapter.remove(adapter.getItem(position));

                    adapter.notifyDataSetChanged();

                }

            });

            // the Cancel button Fails to display
            alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();

                }
            });

            return false;
        }
    }); // KJP NOTE: Test 07-May-2016 End Test.

2 个答案:

答案 0 :(得分:0)

alert.create(); alert.show();之前的方法末尾添加return false;。 您的对话框将可见,然后您可以点按Yes以删除该项目。

答案 1 :(得分:0)

我没有看到你调用alert.show()来实际显示对话框。你建立它,但不显示它。有一个例子说明这是如何工作的here