2017-10-12 58 views
0

我有这个ListView包含项目,我想创建一个提醒对话框,当我长时间点击一个项目时删除这些项目。 onLongClick对一个项目显示一个AlertDialog,如果我单击是,它将删除该项目。使用提示对话框从ListView中删除一个项目

这是我的代码。

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; 
    } 
}); 
+1

那么什么是您所遇到的问题? –

+0

描述您的问题。当您按YES按钮时,该项目是不会被删除? –

+0

当我选择是删除该项目时,应用程序崩溃 –

回答

3

我觉得问题是'我'的位置提醒对话框点击列表和你需要用户列表项目点击的位置,以便从列表中删除项目。

请使用如下代码:

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; 
     } 
    }); 
0
listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { 
      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 dialog, int which) { 
          try { 
           dataModels.remove(position); 
           adapter.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(); 

     } 
    }); 

这是我的作品尝试这种