6

Tôi gặp lỗi trong bản ghi của mình rằng "Nội dung của bạn phải có ListView có thuộc tính id là 'android. R.id.list '". Mã của tôi biên dịch và chạy nhưng lực đóng lại khi tôi bắt đầu hoạt động listview của mình. Tôi đã kiểm tra nhiều câu hỏi tương tự, có vẻ như đó là vấn đề phổ biến nhưng tôi vẫn không thể sửa mã của mình.Lỗi danh sách xem: "Nội dung của bạn phải có ListView có thuộc tính id là 'android.R.id.list'"

Tuyên bố:

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; 

     } 
    } 
} 

My 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 của tôi:

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

Trả lời

28

Bạn đang thể sử dụng một ListActivity.

Trong bạn firstlist.xml thay thế id để:

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

ListActivity tìm kiếm id R.android.id.list mà bạn trong xml là @android: id/danh sách.


Ngoài ra nhìn vào bài đăng này: ListView whose id attribute is 'android.R.id.list' Error when I have the ListView id set correctly

+0

Tôi không nghĩ rằng tôi biết những gì bạn có ý nghĩa. Dường như tôi có listview tuyên bố có chính xác như thế nào bạn gõ nó –

+0

Khi tôi sao chép và dán mã tôi nhận được một lỗi theo "lv = (ListView) lv.findViewById (R.id.list);" dưới danh sách .list không thể được giải quyết hoặc không phải là một trường –

+0

nó không hoạt động khi tôi sử dụng lv = getListView(); hoặc –