6

我在我的logcat中发现一个错误:“你的内容必须有一个ListView,它的id属性是android。 R.id.list'”。我的代码编译并运行,但强制关闭时,我开始我的列表视图活动。我检查了许多类似的问题,这似乎是一个常见问题,但我仍然无法修复我的代码。Listview错误:“你的内容必须有一个ListView的id属性是'android.R.id.list'”

宣言:

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; 

     } 
    } 
} 

我的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> 

我时listItems:

<?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> 

回答

28

您可能正在使用一个ListActivity。

在你firstlist.xml更换ID到:

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

ListActivity查找的ID R.android.id.list你在XML是@android:ID /列表。


也看看这个帖子:ListView whose id attribute is 'android.R.id.list' Error when I have the ListView id set correctly

+0

我不认为我知道你的意思。它看起来像我有列表视图在那里确切地键入它 – 2012-01-02 20:59:43

+0

当我复制并粘贴代码我得到一个错误“lv =(ListView)lv.findViewById(R.id.list);” .list列表无法解析或不是字段 – 2012-01-02 21:34:49

+0

它不起作用,当我使用lv = getListView(); – 2012-01-02 22:00:37