2016-05-04 3 views
0

У меня есть ListView с именами файлов и, когда я долгое нажатие имя файла я удалить его, но ListView не обновляет его содержимое после вызоваПри удалении файла приложение не обновляет свой ListView в Android

adapter.notifyDataSetChanged(); 

я заполнить ListView следующим:

dirFiles = new File("/storage/emulated/0/Android/data/com.computergr.ats/files/"+""); 
    File list[] = dirFiles.listFiles(); 
    if(list!=null) 
    { 
     for(int i=0; i< list.length; i++) 
     { 
      myList.add(list[i].getName()); 
     } 
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, myList); 
     ListFiles.setAdapter(adapter); 
    } 

я удалить файл, используя следующие:

  AlertDialog.Builder alert = new AlertDialog.Builder(Settings.this); 
      alert.setTitle("WARNING.."); 
      alert.setMessage("Are you sure to delete file?"); 
      alert.setPositiveButton("YES", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        //do your work here 
        String filename = ListFiles.getItemAtPosition(pos).toString(); 
        String WebFile = dirFiles + "/" + filename; 
        File file = new File(WebFile); 
        if(file.exists()) 
        { 
         file.delete(); 
         adapter.notifyDataSetChanged(); 
        } 
        dialog.dismiss(); 
       } 
      }); 
      alert.setNegativeButton("NO", new DialogInterface.OnClickListener() { 

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

      alert.show(); 
      return true; 
+0

пожалуйста, напишите весь код –

+0

удалить элемент из объекта MyList постиона и после этого обновления у ListView –

+0

Как удалить элемент из объекта MyList? –

ответ

0

Вы не обновляете список, который вы предоставляете адаптеру. Вы удалили элемент из системы, но список элементов массива должен быть обновлен.

Обновите блок для удаления обновить ArrayList вы предоставляете, а затем вызвать

@Override 
       public void onClick(DialogInterface dialog, int which) { 
        //do your work here 
        String filename = ListFiles.getItemAtPosition(pos).toString(); 
        String WebFile = dirFiles + "/" + filename; 
        File file = new File(WebFile); 
        if(file.exists()) 
        { 
         file.delete(); 
         //This is the line your missing. ArrayAdapter 
         //comes with a method to delete objects in it's array 
         //since your array uses the names of the files. 
         //Pass the remove method the name of the file. 
         adapter.remove(File.getName()); 
         adapter.notifyDataSetChanged(); 
        } 
        dialog.dismiss(); 
       } 
      }); 

ArrayAdater Documentation Android File Documentation

+0

Большое спасибо –

0

Вы должны удалить файл в самом адаптере или в контейнере, используемом для адаптера, иначе он будет отображаться.

+1

Как @Daniil сказал, что вам нужно очистить список arraylsit любых других списков, а затем обновить адаптер уведомлений – user492888

0
if(file.exists()) 
{ 
file.delete(); 
myList.remove(postion)//After this u can run notifyDataSetChanged method 
adapter.notifyDataSetChanged(); 
} 
dialog.dismiss(); 
Смежные вопросы