如何在安卓中动态添加列表视图的项目

3

有人可以帮帮我吗?我正在尝试在Android中创建一个ListView,并尝试使用代码(而不是使用XML)将项目加载到其中。

这是我目前的代码:

tweetList = (ListView)this.findViewById(R.id.tweetListView);
        TextView tv;
        for(int i=0;i<20;i++)
        {
            tv = new TextView(this);
            tv.setText("I'm a textView");
            tweetList.addHeaderView(tv);

        }

        tweetList.invalidate();

我做错了什么?项目在运行时没有显示。
编辑:根据下面的答案,我修改了代码,现在我的代码如下。
 tweetList = (ListView)this.findViewById(R.id.tweetListView);
        ArrayAdapter<TextView> aa = new ArrayAdapter<TextView>(this, R.id.tweetListView);
        tweetList.setAdapter(aa);
        TextView tv;
        for(int i=0;i<20;i++)
        {
            tv = new TextView(this);
            tv.setText("I'm a textView");
            //tweetList.addHeaderView(tv);

            aa.add(tv);

        }

        tweetList.invalidate();

现在我遇到了一个异常

11-10 01:32:16.002: ERROR/AndroidRuntime(867): android.content.res.Resources$NotFoundException: Resource ID #0x7f050030 type #0x12 is not valid

为什么我现在无法动态添加它们?

1
现在你向arrayAdapter提供了一个id字段,但它应该是一个布局项。 - Peterdk
2个回答

7
你需要使用 ArrayAdapter 并将其添加到 ListView 中。然后只需动态地向 ArrayAdapter 添加元素。
例如:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1);
tweetList.setAdapter(arrayAdapter);
// ...
arrayAdapter.add("New Item");

谢谢,伙计,你太棒了!我在适配器的声明上犯了个错误,一旦修复,适配器现在可以正常工作了。 - KamalSalem
现在我有另一个问题,我正在尝试将TextView添加到ListView中,这是否像我们在WPF中做的那样可能?现在列表视图中的所有项目都显示为“android.widget.textview@someID”。 - KamalSalem
@user974038 请尝试使用 ArrayAdapter<TextView> 而不是 ArrayAdapter<String> - Eng.Fouad
这里的“context”是什么? 因为“this”不起作用,因为它不是android.content.Context类型。 - Menno van Leeuwen

0
头部视图只是一个标题,而不是列表中的项目。您的ListView通过适配器接收其内容。ListView不会为其子项保留视图,而是适配器在需要在屏幕上显示时创建它们并填充适当的数据。搜索有关如何执行此操作的基本教程,有很多;并记住,适配器是关键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接