Адаптер списка обновления для Android onResume

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

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

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

@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-интерфейс сервера и обновляет имена и статусные массивы.

С помощью этого кода список на самом деле не обновляется...

Ответ 1

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

Ответ 2

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

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

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

Спасибо....

Ответ 3

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

 list.setAdapter(adapter);

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

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

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

setResult(RESULT_OK);
finish();

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

 arraylist.add(javabeanClassname.getName());

добавьте этот arraylist в Adapter и напишите код

 list.setAdapter(adapter);

Ответ 4

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

listView.removeAllViews(); 

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