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

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

Posted by: admin March 11, 2020 Leave a comment

Questions:

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>
How to&Answers:
<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.

Answer:

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.

Answer:

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().

Answer:

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 😉 )

Answer:

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

Answer:

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(){...}

Answer:

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