2012-06-22 5 views
1

У меня есть список, отображающий несколько данных из моей базы данных с использованием базового адаптера в разных классах. Я хочу обновлять свой список каждый раз, когда я удаляю или добавляю элемент в свою базу данных.notifyDataSetChanged() не работает для меня

Вот мой код, но он не освежает мой список. Пожалуйста, помогите мне, где я должен положить notifyDataSetChanged().

BaseAdapter ad = ((orderadapter)list.getAdapter()); 
ad.notifyDataSetChanged(); 

Спасибо.

ответ

1

Сначала я decalre адаптер в качестве глобальной переменной:

 public ListAdapter adapter = null; 

Теперь я инициализировать мой ListView (в котором я должен поместить элементы) в OnCreate() метод. Раскладка для этого ListView определяются в файле XML:

 listView = (ListView)findViewById(R.id.myList); 

Теперь я получаю все значения, которые будут показаны в ArrayList, а затем инициализировать адаптер с этим ArrayList (вы можете использовать любой другой способ хранения данных, а также):

 adapter = new ListAdapter(availableMessageNotifications,MessageNotificationActivity.this); 
     listView.setAdapter(adapter); 
     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

А потом я поставил onItemClickListener по каждому пункту списка:

 OnItemClickListener listener = new OnItemClickListener(){ 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position,long id) { 
     //your code for an item clicked. 
    } 
    listView.setOnItemClickListener (listener); 

Я надеюсь, что это поможет.

Вы должны вызвать notifyDataSetChanged() из пользовательского интерфейса резьбы:

 yourList.remove(position); 
     runOnUiThread(new Runnable() { 
      public void run() { 
       yourAdapter.notifyDataSetChanged(); 
      } 
     }); 
+0

Thnx за ответ –

+0

я использую класс BaseAdapter и как я создаю новый адаптер для вызова notifyDataSetChanged()? Это мой код BaseAdapter adapter = (BaseAdapter) list.getAdapter(); adapter.notifyDataSetChanged(); –

+0

Я отредактировал свой ответ. Посмотрите, может ли он вам помочь. –

1

У меня есть лицо того же проблема, но теперь решается с помощью ниже коды.

listView.post(new Runnable() { 
     public void run() { 
     adpater.notifyDataSetChanged(); 
     } 
    }); 
Смежные вопросы