Я пытаюсь заполнить listView, но если я инициализирую его после onCreate
он не появляется. Я попытался инициализировать его в onCreate
и использовать adapter.notifyDataSetChanged();
после того, как я вставил значения в массив String, используемый для заполнения listView, но у меня ничего не получилось.
Кто-нибудь знает, как решить эту проблему? Я проверил другие вопросы, но не нашел ответа на свою проблему.
Заранее спасибо.
Может быть, вам нужно вызвать 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: извините за мои плохие навыки публикации. Я новый.