Button下的ListView

时间:2012-08-23 17:43:02

标签: android listview

所以我试图在同一版面上的按钮下面填充ListView。基本上,当选择ListView选项时,按钮将对每个选定的选项做出不同的响应。问题是它正在关闭一个Force,这似乎是填充ListView的一个问题。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    >
<Button
    android:background="@drawable/button"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp" 
    android:layout_gravity="center"
    android:id="@+id/button"/>

    <ListView
    android:listSelector="#990000"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="10dp"
    android:id="@+id/listview"
    />
</LinearLayout>

代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    lv = (ListView) findViewById(R.id.listview);

    ArrayList<String> list = new ArrayList<String>();
    soundsList.add("one");
soundsList.add("two");
soundsList.add("three");



    ArrayAdapter<String> arrayAdapter =      
             new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list);
             lv.setAdapter(arrayAdapter);

Logcat读数是这样的:

08-23 10:21:23.735: ERROR/AndroidRuntime(588): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

我已经尝试了它在ArrayAdapter中所说的内容...(android.R.id.list。我尝试了很多其他的东西,包括扩展ListActivity,但无论我尝试什么,我似乎得到一个类似的Logcat回应。

有没有更好的方法来实现我想要实现的目标?我想将ListView上方的按钮全部放在同一个main.xml上。

提前致谢。

编辑:

我也试过这段代码。目前已注释掉,但这是我最初尝试过的。

setListAdapter(new ArrayAdapter<String>(this, android.R.id.list,LIST));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

LIST是一个字符串数组。上面代码中Logcat的输出与前面的代码相同。

1 个答案:

答案 0 :(得分:1)

听起来你正在尝试实现ListActivity或ListFragment,它希望找到一个具有特定名称的listview实例,因此会出错。尝试更改列表视图的ID:

android:id="@+id/listview"

为:

android:id="@android:id/list"

我知道你说过你已经尝试过了,但鉴于你的代码,看起来它仍然是错误的。更改后,您可以发布新的错误消息吗?我根据你的描述意识到这将是一个类似的信息,但即使差异很小,它可能仍然很重要。

编辑:

我刚注意到的另一件事 - 如果您确实使用了ListActivity或FragmentActivity,请通过调用getListView() instead of findViewById()来获取ListView的引用。