【问题标题】:Listview doesn't appear if not declared into onCreate如果未在 onCreate 中声明,则不会出现 Listview
【发布时间】:2019-02-20 17:50:36
【问题描述】:
我正在尝试填充 listView,但如果我在 onCreate 之后初始化它,它不会出现。在我将值插入用于填充 listView 的字符串数组后,我尝试将其初始化为 onCreate 并使用 adapter.notifyDataSetChanged();,但没有成功。
有人知道如何解决这个问题吗?我检查了其他问题,但没有找到问题的答案。
提前致谢。
【问题讨论】:
标签:
android
android-layout
【解决方案1】:
也许您需要在 UI 线程中调用 adapter.notifyDataSetChanged()。
另外,最好使用ArrayList<String> 而不是String[]
在 activity 类中保留对 ArrayList 和 ArrayAdapter 的引用。
private ArrayList<String> items;
private ArrayAdapter<String> adapter;
初始化您的ArrayList<String> 并在您的onCreate 中设置adapter
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() 应在UI 线程中调用。
例如,在按下按钮时,您可能想要这样做
items.add("New item");
adapter.notifyDataSetChanged();
您可能还想检查这些:
this 和
this
PS:抱歉我的发帖技巧不好。我是新人。