RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

Android

Android Problem Overview


I am getting a run time exception

> java.lang.RuntimeException: Your content must have a ListView whose id > attribute is 'android.R.id.list'

I don't know what is wrong.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newslist);
    mDbHelper.open();
    fillData();
}

private void fillData() {
    Bundle extras = getIntent().getExtras();
    long catID = extras.getLong("cat_id");
    Cursor c = mDbHelper.fetchNews(catID);
    startManagingCursor(c);

    String[] from = new String[] { DBHelper.KEY_TITLE };
    int[] to = new int[] { R.id.newslist_text };

    SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.text_newslist, c, from, to);
    setListAdapter(notes);
}

newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
    <ListView 
         android:id="@+id/catnewslist"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
    </ListView>
</LinearLayout>

text_newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView 
        android:text="@+id/newslist_text"
        android:id="@+id/newslist_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">    
    </TextView>
</LinearLayout>

Android Solutions


Solution 1 - Android

<ListView android:id="@android:id/list"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent"/>

This will solve the error if you still want to use a ListActivity.

Solution 2 - Android

Remove the call to setContentView - you don't need it in a ListActivity unless you're doing something radical. The code should work without it.

Solution 3 - Android

Another way is, don't extend ListActivity. Just extends Activity, then you can create your list view by setContentView() and get the list view by findViewById(R.id.yourlistview).

If you extends from ListActivity, then don't use setContentView(). You need get the default list view hosted in list activity by getListView().

Solution 4 - Android

I had a similar issue with the error message you received, and I found it was because I was extending ListActivity instead of just Activity (that's what I get for re-purposing code from a different project ;) )

Solution 5 - Android

<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>

Solution 6 - Android

I face like this too. In my case (Maybe not relevant with your case, just share to others) in class mainActivity.java yourClassName extends ListActivity(){...} change to yourClassName extends Activity(){...}

Solution 7 - Android

I also faced this issue, I was extending my activity class from listactivity, but the id of my list view was not defualt I changed it back to list and now its working fine. Asim soroya

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrajiView Question on Stackoverflow
Solution 1 - AndroidNicView Answer on Stackoverflow
Solution 2 - AndroidBen L.View Answer on Stackoverflow
Solution 3 - AndroidzgcharleyView Answer on Stackoverflow
Solution 4 - AndroidTomView Answer on Stackoverflow
Solution 5 - AndroidkidView Answer on Stackoverflow
Solution 6 - AndroidSenView Answer on Stackoverflow
Solution 7 - AndroidAsim SoroyaView Answer on Stackoverflow