所以我试图在同一版面上的按钮下面填充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的输出与前面的代码相同。
答案 0 :(得分:1)
听起来你正在尝试实现ListActivity或ListFragment,它希望找到一个具有特定名称的listview实例,因此会出错。尝试更改列表视图的ID:
android:id="@+id/listview"
为:
android:id="@android:id/list"
我知道你说过你已经尝试过了,但鉴于你的代码,看起来它仍然是错误的。更改后,您可以发布新的错误消息吗?我根据你的描述意识到这将是一个类似的信息,但即使差异很小,它可能仍然很重要。
编辑:
我刚注意到的另一件事 - 如果您确实使用了ListActivity或FragmentActivity,请通过调用getListView() instead of
findViewById()来获取ListView的引用。