【问题标题】: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 类中保留对 ArrayListArrayAdapter 的引用。

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

初始化您的ArrayList&lt;String&gt; 并在您的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);

现在,每当您想更改项目时,调用ArrayListadd()remove() 等方法,然后调用adapter.notifyDataSetChanged()。对ArrayList 的更改可以在任何线程中完成,但adapter.notifyDataSetChanged() 应在UI 线程中调用。

例如,在按下按钮时,您可能想要这样做

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

您可能还想检查这些: this

this

PS:抱歉我的发帖技巧不好。我是新人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多