0

所以我试图让 ListView 填充在同一布局上的按钮下方。基本上选择了ListView选项时,按钮将与每个所选选项不同。问题是它正在强制关闭,并且似乎是填充 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 上的输出与之前的相同。

4

1 回答 1

1

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

android:id="@+id/listview"

到:

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

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

编辑:

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

于 2012-08-23T17:48:43.147 回答