java - 使用警报对话框从 ListView 中删除项目

标签 java android listview

我有一个包含项目的 ListView ,我想创建一个警报对话框,当我长按某个项目时,该对话框会删除任何这些项目。项目上的 onLongClick 会显示 AlertDialog,如果我单击"is",则会删除该项目。

这是我的代码。

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
        new AlertDialog.Builder(MainActivity.this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setMessage("Are You Sure You Want to Delete This Note?!")
                .setTitle("Attempt to Delete A Note")
                .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                      try {
                          notesList.remove(i);
                          arrayAdapter.notifyDataSetChanged();

                          Toast.makeText(MainActivity.this, "ooooooh No!!", Toast.LENGTH_SHORT).show();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                    }
                })
                .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "Good Choice", Toast.LENGTH_SHORT).show();
                    }
                })
                .show();
        return true;
    }
}); 

最佳答案

我认为问题是警报对话框单击监听器的“i”位置,您需要用户列表项单击的位置才能从列表中删除项目。

请使用以下代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) {
            new AlertDialog.Builder(MainActivity.this)

                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setMessage("Are You Sure You Want to Delete This Note?!")
                    .setTitle("Attempt to Delete A Note")
                    .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                          try {
                              if(notesList!=null){
                              notesList.remove(position);
                              arrayAdapter.notifyDataSetChanged();

                            Toast.makeText(MainActivity.this, "ooooooh No!!", Toast.LENGTH_SHORT).show();
                           }
                          }catch (Exception e){
                              e.printStackTrace();
                          }
                        }
                    })
                    .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(MainActivity.this, "Good Choice", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .show();
            return true;
        }
    }); 

关于java - 使用警报对话框从 ListView 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46709242/

相关文章:

java - 我应该使用什么作为返回语句?

java - 为什么 Java WebDriver 不使用更新的 WebDriver 扩展启动 Firefox?

android - 什么时候应该使用 "spring for android"?

java - 有没有办法限制 Android 中的 Google 登录到某个电子邮件域?

java - 带有自定义 ArrayAdapter setOnItemClickListener 的 ListView 不会触发

java - 向左或向右滑动以更改 Fragment 内的 RecyclerView

android - 用于 Linux/Ubuntu 的 adreno 分析器

android - 从 Dropbox Android Studio 的共享链接中读取 .txt 文件

c# - DataTemplate 中带有 DoubleAnimation 的 Storyboard

java - 使用 java -classpath 命令执行主类时出现 NoClassDefFoundError