2014-12-11 2 views
0

Привет, я работаю с видом на андроид. У меня есть собственное представление списка, и я ищу для удаления с длинным кликом списка. Я использовал базовый адаптер для установки данных списка массивов в виде списка. Теперь проблема заключается в том, что, когда я ищу, чтобы удалить элемент из списка просмотра другого элемента получить deleted.How я могу решить this.Please помочь мне заранее спасибо :)Android listview item deletion изменяет свою позицию

l1.setOnItemLongClickListener(new OnItemLongClickListener() { 

      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int pos, long id) { 
       // TODO Auto-generated method stub 



       AlertDialog.Builder builder = new AlertDialog.Builder(ViewList.this); 

       ListView modeList = new ListView(ViewList.this); 
       String[] stringArray = new String[] { "Edit", "Delete" }; 
       ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(ViewList.this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray); 
       modeList.setAdapter(modeAdapter); 

       builder.setView(modeList); 
       final Dialog dialog = builder.create(); 

       modeList.setOnItemClickListener(new OnItemClickListener() {  
        public void onItemClick(AdapterView<?> parent,View view,final int position,long id) { 


         switch (position) { 
         case 0:Toast.makeText(getApplicationContext(), "edit", 5000).show(); 
         dialog.dismiss();break; 
         case 1: Toast.makeText(getApplicationContext(), "delete", 5000).show(); 


         new AlertDialog.Builder(ViewList.this) 
         .setTitle("Delete entry") 
         .setMessage("Are you sure you want to delete this entry?") 
         .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           Toast.makeText(getApplicationContext(), "deleted", 5000).show(); 

           date_array.remove(position); 
           day_array.remove(position); 
           month_array.remove(position); 
           sent_array.remove(position); 

           l1.setAdapter(new dataListAdapter(month_array,date_array,day_array,sent_array)); 
          } 
         }) 
         .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           Toast.makeText(getApplicationContext(), "cancelled", 5000).show(); 
          } 
         }) 
         .setIcon(android.R.drawable.ic_dialog_alert) 
         .show(); 
         dialog.dismiss(); 
         break; 

         default: System.out.println("Sunday");break; 
        } 

        } 
       }); 


       dialog.show(); 
       Toast.makeText(getApplicationContext(), "Long clicked at"+pos, 5000).show(); 

       return true; 
      } 
     }); 

Update я не могу удалите верхнюю часть элемента. Когда я удалю другой элемент, элемент чуть ниже самого верхнего элемента удаляется.

+0

Используйте ** pos ** вместо ** позиции ** в вашем коде. Также вы должны использовать ** notifyDataSetChanged() ** вместо настройки адаптера снова. – Sumit

ответ

1

позиция - это позиция вашей кнопки «удалить», поэтому всегда 1, что соответствует второму пункту в ваших массивах. pos - это индекс, для которого вы хотите удалить.