我的main.xml
就像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
和row.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:padding="2dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/accept"
/>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40sp"
/>
</LinearLayout>
我的程序这样做(我从一本书中拿了例子):
public class FancyListActivity extends ListActivity {
private TextView selection;
private static final String[] items= {"lorem", "ipsum","dolor","sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula", "vitae", "arcu",
"aliquet", "mollis", "etiam", "vel", "erat", "placerat", "ante",
"porttitor","sodales","pellentesque","augue", "purus"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.row);
setListAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.label, items));
selection= (TextView)findViewById(R.id.label);
}
public void onListItemClick(ListView parent, View v, int position, long id){
selection.setText(items[position]);
}
}
但现在我得到了这个错误:
Your content must have a ListView whose id attribute is 'android.R.id.list'
如果我有我的android:id =“@ + id / list”?
,为什么我会收到此错误答案 0 :(得分:1)
您正在使用ListActivity。根据Google文档中的说明,您需要在 main.xml 文件中指定列表,如下所示:
<ListView android:id="@android:id/list"
...
此外,您应该拨打setContentView(R.layout.main);
,而不是像现在这样将活动内容设置为row.xml
文件!
最后,在这些更改之后,这两行仍然存在问题:
selection= (TextView)findViewById(R.id.label);
...和
selection.setText(items[position]);
评论那些,你的代码将再次运作。至于这个TextView的东西,我不确定你想要实现的是什么,但是如果目的是以某种方式显示列表顶部/底部的TextView对象中所选列表项的内容,那么这个TextView应放在 main.xml 文件中。