Android ListView setAdapter问题

时间:2011-12-05 22:10:21

标签: android android-layout android-listview

我尝试绑定数据在android上执行listview,但我无法做到。

我在互联网上看到了一些代码并且它有效,但我不知道为什么,而且我不想动态创建新的ListView,我想使用的是列在main.xml上

为什么我可以这样做:

ListView lv = new ListView(this);
        lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,PEOPLE));
        setContentView(lv);

但我不能这样做:

ListView listPessoas = (ListView) findViewById(R.id.listPessoas);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.id.listPessoas, PESSOAS);
        listPessoas.setAdapter(adapter);

4 个答案:

答案 0 :(得分:2)

此处的错误是您创建新ArrayAdapter时的错误。您正在将R.id.listPessoas作为行视图用于每一行。这是ListView的ID。 adapter正在查找包含文本视图的布局ID,该文本视图将用于列表的每一行。将R.id.listPessoas更改为android.R.layout.simple_list_item_1,您的代码应该有效。 simple_list_item_1布局只是数据绑定的TextView

答案 1 :(得分:2)

什么是R.id.pessoas ??

这对我来说很好用:

String[] x = new String[]{"AAA","BBB","CCC"};
ListView lv = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> test = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,x);
lv.setAdapter(test);

答案 2 :(得分:0)

您所写的内容不正确,数组适配器构造函数中的第二个参数应该是每个列表项的简单布局,而不是列表视图。

如果您的列表项具有自定义复杂布局,则还需要编写自定义适配器。

答案 3 :(得分:-1)

如果您收到错误。

getApplicationContext();将会工作,而不是&#39;这个&#39;。