2012-03-15 3 views
0

Я создал ListView, используя ListActivity и ArrayAdapter для файлов Sdcard. Работает хорошо.Добавить Один дополнительный элемент в ListActivity

Затем я хочу добавить один дополнительный элемент в ListView. Поэтому я добавил один элемент в список и вызвал notifyDataSetChanged(). Но оно показывает силу близко. Почему? Помогите мне.

 FilenameFilter fnf=new FilenameFilter() 
     { 

      public boolean accept(File dir, String filename) { 
       // TODO Auto-generated method stub 
       if(new File(dir+"/"+filename).isDirectory()) 
        return true; 
       else 
       return false; 
      } 

     }; 
     filelist=sdcard.list(fnf); 
     List<String> list=Arrays.asList(filelist); 
     Collections.sort(list); 
     ArrayAdapter<String> listadap=new ArrayAdapter<String>(this,R.layout.filelist,R.id.listview,list); 
     setListAdapter(listadap); 
     list.add("Test"); 
     listadap.notifyDataSetChanged(); 
+1

положить логарифм, если сила - закрыть –

+0

Logcat: http: //pastebin.com/yfXmBwD8 –

ответ

0

Почему вы разместили List.add("Test"); после настройки адаптера?

Вы не можете изменить это.

FilenameFilter fnf=new FilenameFilter() 
    { 

     public boolean accept(File dir, String filename) { 
      // TODO Auto-generated method stub 
      if(new File(dir+"/"+filename).isDirectory()) 
       return true; 
      else 
      return false; 
     } 

    }; 
    filelist=sdcard.list(fnf); 
    List<String> list=Arrays.asList(filelist); 
    list.add("Test"); 
    Collections.sort(list); 
    ArrayAdapter<String> listadap=new ArrayAdapter<String>(this,R.layout.filelist,R.id.listview,list); 
    setListAdapter(listadap);   
    //listadap.notifyDataSetChanged(); 
1

Если вы хотите динамически изменять содержимое своего ListView. Создайте свой CustomAdapter, простирается от BaseAdapter. Передайте список конструктору адаптера. Перепишите методы интерфейса BaseAdapter.

И добавьте способ добавления в адаптер. У вас будет экземпляр List в адаптере (сохраните его в поле из конструктора). Метод добавления, добавит элемент к «ArrayList», а затем, просто this.notifyDataChanged() (это, потому что ты в CustomAdapter)

Этот метод позволит решить проблему jumpls в ListView с отдыха адаптера.

0

Спасибо за вашу помощь.

Я нашел другое решение для добавления кнопки в свой список.

bt_up=new Button(this); 
bt_up.setText("Up"); 
getListView().addView(bt_up); 

Это также работает для TextView.

Смежные вопросы