如何在android中动态地向listview添加项目

时间:2011-11-09 23:08:48

标签: java android

任何人都可以帮助我吗?我正在尝试在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

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

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

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