Listview错误:";您的内容必须具有id属性为';android.R.id.list'&引用;

Listview错误:";您的内容必须具有id属性为';android.R.id.list'&引用;,android,android-intent,android-listview,android-relativelayout,listviewitem,Android,Android Intent,Android Listview,Android Relativelayout,Listviewitem,我在我的日志中得到一个错误,说“你的内容必须有一个id属性为‘android.R.id.list’的ListView”。我的代码可以编译并运行,但在启动listview活动时强制关闭。我已经检查了许多类似的问题,这似乎是一个常见的问题,但我仍然无法修复我的代码 宣言: private ListView lv; Context mContext; List mList; String[] testcontacts; MessageView aa = nul

我在我的日志中得到一个错误,说“你的内容必须有一个id属性为‘android.R.id.list’的ListView”。我的代码可以编译并运行,但在启动listview活动时强制关闭。我已经检查了许多类似的问题,这似乎是一个常见的问题,但我仍然无法修复我的代码

宣言:

    private ListView lv;
    Context mContext;
    List mList;
    String[] testcontacts;

    MessageView aa = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.firstlist);
        testcontacts = getResources()
                .getStringArray(R.array.testcontacts_array);

        aa = new MessageView();
        lv = getListView();/*(ListView) lv.findViewById(R.id.list); Had to comment out, it cannot find list*/
        lv.setAdapter(aa);
        lv.setTextFilterEnabled(true);

        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                        ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            }
        });
    }
class MessageView extends ArrayAdapter<String> {
        MessageView() {
            super(FirstLoginActivity.this, android.R.layout.activity_list_item,
                    testcontacts);
            // TODO Auto-generated constructor stub
        }

        public View getView(int position, View convertview, ViewGroup parent) {
            Log.d("Ebz", "inside getView method");
            ViewHolder holder;
            View v = convertview;
            if (v == null) {
                Log.d("Ebz", "if v == null");
                LayoutInflater inflater = getLayoutInflater();
                v = inflater.inflate(R.layout.list_items, null);
                holder = new ViewHolder();
                holder.firstLine = (TextView) v.findViewById(R.id.firstLine);
                holder.secondLine = (TextView) v.findViewById(R.id.secondLine);
                holder.icon1 = (ImageView) v.findViewById(R.id.icon1);
                holder.icon2 = (ImageView) v.findViewById(R.id.icon2);
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }
            holder.firstLine.setText(testcontacts[position]);
            holder.secondLine.setText(testcontacts[position]);
            holder.icon1.setImageBitmap(null);
            holder.icon2.setImageBitmap(null);
            // call the images directly?
            return v;
        }

        class ViewHolder {
            TextView firstLine;
            TextView secondLine;
            ImageView icon1;
            ImageView icon2;

        }
    }
}
私有ListView lv;
语境;
列表列表;
字符串[]testcontacts;
MessageView aa=null;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.firstlist);
testcontacts=getResources()
.getStringArray(R.array.testcontacts\u数组);
aa=新消息视图();
lv=getListView();/*(ListView)lv.findViewById(R.id.list);必须注释掉,无法找到列表*/
低压设置适配器(aa);
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),
((TextView)view.getText(),Toast.LENGTH_SHORT.show();
}
});
}
类MessageView扩展了ArrayAdapter{
MessageView(){
super(FirstLoginActivity.this、android.R.layout.activity\u列表\u项、,
试验接触);
//TODO自动生成的构造函数存根
}
公共视图getView(int位置、视图转换视图、视图组父视图){
Log.d(“Ebz”,“内部getView方法”);
视窗座;
视图v=转换视图;
如果(v==null){
Log.d(“Ebz”,“如果v==null”);
LayoutInflater充气机=getLayoutInflater();
v=充气机充气(R.layout.list_项目,空);
holder=新的ViewHolder();
holder.firstLine=(TextView)v.findViewById(R.id.firstLine);
holder.secondLine=(TextView)v.findViewById(R.id.secondLine);
holder.icon1=(ImageView)v.findViewById(R.id.icon1);
holder.icon2=(ImageView)v.findViewById(R.id.icon2);
v、 setTag(支架);
}否则{
holder=(ViewHolder)v.getTag();
}
holder.firstLine.setText(testcontacts[position]);
holder.secondLine.setText(测试触点[位置]);
holder.icon1.setImageBitmap(空);
holder.icon2.setImageBitmap(空);
//直接调用图像?
返回v;
}
类视图持有者{
文本视图第一行;
文本视图第二行;
图像视图图标1;
ImageView图标2;
}
}
}
我的XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/top_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_weight="1"
            android:background="#cc252a"
            android:paddingBottom="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:text="This will be Changed"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_above="@id/bottom_control_bar"
        android:layout_below="@id/top_control_bar"
        android:choiceMode="multipleChoice" />

</RelativeLayout>

我的列表项目:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/top_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_weight="1"
            android:background="#cc252a"
            android:paddingBottom="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:text="This will be Changed"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </RelativeLayout>

    <LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_above="@id/bottom_control_bar"
        android:layout_below="@id/top_control_bar"
        android:choiceMode="multipleChoice"
        android:divider="#cc252a"
        android:dividerHeight="14.5dp" />

</RelativeLayout>

您可能正在使用ListActivity

在firstlist.xml中,将id替换为:

<ListView
    android:id="@android:id/list"
...

我想我不知道你的意思。看起来我已经在listview中声明了你键入它的确切方式。当我复制并粘贴代码时,我在“lv=(listview)lv.findViewById(R.id.list);”下得到了一个错误。列表列表无法解析或不是字段。请看一看你的声明:你写了安卓:id=“@+id/list”,我的是安卓:id=“@android:id/list”。这就是问题所在。正如我在后面阐述的那样,ID是问题所在,而您的声明是错误的。感谢您使我的listview正常工作,但它没有在我的getview方法上显示我想要的方式。它的显示方式和其他基本列表视图一样,而不是我的自定义列表。我开始了另一篇关于第二个问题的帖子,以防你想查看它