Listview не появляется, если не объявлено в onCreate

1

Я пытаюсь заполнить listView, но если я инициализирую его после onCreate он не появляется. Я попытался инициализировать его в onCreate и использовать adapter.notifyDataSetChanged(); после того, как я вставил значения в массив String, используемый для заполнения listView, но у меня ничего не получилось.

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

Заранее спасибо.

Теги:
android-layout

1 ответ

2
Лучший ответ

Может быть, вам нужно вызвать adapter.notifyDataSetChanged() внутри потока пользовательского интерфейса.

Также лучше использовать ArrayList<String> вместо String[]

Храните ссылки на ArrayList и ArrayAdapter внутри своего класса activity.

private ArrayList<String> items;
private ArrayAdapter<String> adapter;

Инициализируйте ваш ArrayList<String> и установите adapter в вашем onCreate

items = new ArrayList<String>();
// add initial items
items.add("1st item");
// create adapter
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
// set the adapter
listView.setAdapter(adapter);

Теперь, когда вы захотите изменить элементы, вызовите методы ArrayList add(), remove() и т.д., А затем вызовите adapter.notifyDataSetChanged(). Изменение в ArrayList может быть сделано в любом потоке, но adapter.notifyDataSetChanged() должен быть вызван в потоке пользовательского интерфейса.

Например, при нажатии кнопки вы можете сделать

items.add("New item");
adapter.notifyDataSetChanged();

Также вы можете проверить это: это и

этот

PS: извините за мои плохие навыки публикации. Я новый.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню