Mike
Mike

Reputation: 5193

android-actionbar in a ListActivity


I'm trying to make the android-actionbar plugin working in my ListActivity,

Here's my Class :

public class DisciplinesController extends ListActivity {

private DisciplinesModel dbHelper;
private Cursor cursor;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_action);

    ActionBar actionBar = (ActionBar) findViewById(R.id.actionbar);

    dbHelper = new DisciplinesModel(this);
    dbHelper.open();
    if (dbHelper.fetchDisciplineCount() == 0) {
        dbHelper.fetch();
    }
    cursor = dbHelper.fetchAllDisciplines();
    startManagingCursor(cursor);

    ListAdapter adapter = new SimpleCursorAdapter(this, R.id.list, 
            cursor, new String[] { "name" }, new int[] { R.id.discipline_name});
    setListAdapter(adapter);
    getListView().setTextFilterEnabled(true);
}
}

and my XML layout :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<com.markupartist.android.widget.ActionBar
    android:id="@+id/actionbar" style="@style/ActionBar" />

<LinearLayout android:id="@+id/list" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/discipline_name"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:gravity="center_vertical" android:paddingLeft="6dip"
        android:minHeight="?android:attr/listPreferredItemHeight" />
</LinearLayout>

</LinearLayout>

I always have this exception :

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

Do you have an idea ??

Thanks !

Upvotes: 1

Views: 2576

Answers (1)

ramen
ramen

Reputation: 46

In your XML layout you must include a ListView element with the @android:id/list id.

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

Basically, you need to rip out the section LinearLayout into a new file (e.g. list_item.xml). Replace this with a listview in your list_action.xml

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

Then change R.id.list in your SimpleCursorAdapter constructor to R.layout.list_item.

Upvotes: 3

Related Questions