Listview не появляется, если не объявлен в onCreate - PullRequest
0 голосов
/ 19 февраля 2019

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

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

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

1 Ответ

0 голосов
/ 20 февраля 2019

Может быть, вам нужно вызвать 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);

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

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

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

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

это

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...