Как удалить элемент из списка с помощью onItemLongClick? - PullRequest
0 голосов
/ 30 июня 2019

Я уже создал onItemLongClick, который будет отображать следующее alertdialog при длительном нажатии на listview.Проблема с моим кодом заключается в том, что даже если я выбрал «Изменить» в качестве опции из списка, элемент все равно будет удален.

Я хотел поставить намерение, когда нажимал «Редактировать» и удалял элементкогда я нажимаю «Удалить», и я понятия не имею, как создать условный оператор для этого.

enter image description here

Вот мой код:

MainActivity.java

<-- start of snippet -->

@Override
public boolean onItemLongClick(AdapterView<?> View view, final int position, long id){
   Persons selectedPersons = this.list.get(position);
   String name = selectedPersons.getName();

   final CharSequence[] options = {"Edit", "Delete"};

   builder.Items(options, new DialogInterference.OnClickListener(){

      @Override
      public void onClick(DialogInterface dialog, int which){
          list.remove(position);
          adapter.notifyDataSetChanged();
          Toast.makeText(MainActivity.this, "Item deleted!", Toast.LENGTH_LONG).show();

}
});
AlertDialog dialog = builder.create();
dialog.show();

return true;

}

<-- end of snippet -->

Ответы [ 3 ]

0 голосов
/ 30 июня 2019

Поскольку вы упомянули wanted to put an intent when I click "Edit" and delete the item when I click Delete, я думаю, что вы можете сделать это, используя значение which из вашего DialogInterference.OnClickListener(), например:

@Override
public boolean onItemLongClick(AdapterView<?> View view, final int position, long id){
   Persons selectedPersons = this.list.get(position);
   String name = selectedPersons.getName();
   final CharSequence[] options = {"Edit", "Delete"};
   builder.Items(options, new DialogInterference.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int which){
          if (which == 0) { //put the edit codes like call an intent
            Intent i = new Intent(getApplicationContext(), ActivityEdit.class);  
            startActivity(i); 
          } else {
             list.remove(position);
             adapter.notifyDataSetChanged();
             Toast.makeText(MainActivity.this, "Item deleted!", Toast.LENGTH_LONG).show();
          }
      }
   });
   AlertDialog dialog = builder.create();
   dialog.show();
   return true;
}

0 голосов
/ 30 июня 2019

Добавьте в список событиеlertdialog onItemLongClick ().Примерно так:

new AlertDialog.Builder(this)
    .setTitle("Are you sure?")
    .setMessage("Do you want to delete this MemberClass?")
    .setIcon(android.R.drawable.ic_dialog_alert)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
        list.remove(position);
        Toast.makeText(DeleteMember.this, "Deleted Member", Toast.LENGTH_SHORT).show(); 
    }})
    .setNegativeButton(android.R.string.no, null).show();
}
0 голосов
/ 30 июня 2019

Поместите условие if внутри вашего onClick, как это -

@Override
 public boolean onItemLongClick(AdapterView<?> View view, f final int position, long id){
    Persons selectedPersons = this.list.get(position);
    String name = selectedPersons.getName();

    final CharSequence[] options = {"Edit", "Delete"};

   builder.Items(options, new DialogInterference.OnClickListener(){

      @Override
      public void onClick(DialogInterface dialog, int which){
          if(options[which].equals("Delete") {
              list.remove(position);
              adapter.notifyDataSetChanged();
              Toast.makeText(MainActivity.this, "Item deleted!", Toast.LENGTH_LONG).show();
           } else if(options[which].equals("Edit") {
                 //Do edit
           }

      }
});
...