Адаптер списка обновлений Android onRume - PullRequest
13 голосов
/ 25 января 2012

Я использую адаптер списка, чтобы показать разные магазины, когда кто-то выбирает магазин, он переводит их в новое действие, где они могут добавить магазин в избранное на этом экране.

На кнопке Назад есть кнопка finish();, которая возвращается на экран с просмотром списка.

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

@Override
public void onResume() {
    super.onResume();
    list.setAdapter(null);      
    updateMyList();
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
        ((String[])status.toArray(new String[0])));
    list.setAdapter(adapter);
}

updateMyList() вызывает API сервера и обновляет имена и массивы состояний.

С этим кодом список не обновляется ...

Ответы [ 4 ]

31 голосов
/ 25 января 2012

Вы должны установить Adapter только на onCreate(), внутри onResume(), вам просто нужно было позвонить adapter.notifyDataSetChanged() с новым набором данных.Это обновит ваш ListView с новой коллекцией данных.

4 голосов
/ 22 марта 2012

Используйте этот код:

myList.clear();
myList.add("your array list items");            
setListAdapter(adapter);
adapter.notifyDataSetChanged();

Я думаю, это поможет вам.

Спасибо ....

1 голос
/ 25 января 2012

Прежде всего вам нужно добавить список магазинов в архив, отправить этот список массивов в ADAPTER и добавить его в список

 list.setAdapter(adapter);

отобразит список магазинов; возьмите onListItemClick нажмите там, вы получите listItem Id; используя идентификатор элемента списка, вы можете дать намерение, подобное этому

Intent intent=new Intent(getApplicationContext(),------.class);
  startActivityForResult(intent);

Возьмите класс методов Java bean / setter и getter; принять метод getter как статический, установить имя магазина, которое вы создали в дочернем действии; переопределить метод с именем onBackPressed(); внутри этого метода напишите

setResult(RESULT_OK);
finish();

взять метод onActivityForResult() в родительском классе; внутри этого метода

 arraylist.add(javabeanClassname.getName());

добавить этот список в Adapter и написать код

 list.setAdapter(adapter);
0 голосов
/ 25 января 2012

Перед добавлением нового представления в список просмотра удалите все предыдущие представления

listView.removeAllViews(); 

, а затем добавьте класс адаптера с новыми значениями. Во-первых, убедитесь, что ваши значения обновляются при возврате из второго действия, и этот код вызывает.

...