ActionBarListActivity の実装は次のとおりです。
public abstract class ActionBarListActivity extends ActionBarActivity {
private ListView mListView;
protected ListView getListView() {
if (mListView == null) {
mListView = (ListView) findViewById(android.R.id.list);
}
return mListView;
}
protected void setListAdapter(ListAdapter adapter) {
getListView().setAdapter(adapter);
}
protected ListAdapter getListAdapter() {
ListAdapter adapter = getListView().getAdapter();
if (adapter instanceof HeaderViewListAdapter) {
return ((HeaderViewListAdapter)adapter).getWrappedAdapter();
} else {
return adapter;
}
}
}
通常の ListActivity と同様に、ID が android.R.id.list (XML では "@android:id/list") の ListView を含むレイアウトが必要です。
getListAdapter() の特徴は、ヘッダー ビューが ListView に追加された場合を処理することです。ListView は独自のアダプターをHeaderViewListAdapterに設定しているように見えるため、キャスト エラーを防ぐためにラップされたアダプターを取得する必要があります。
編集: onListItemClick の必要性を満たすために、この関数を追加してみてください:
protected void onListItemClick(ListView lv, View v, int position, long id) {
getListView().getOnItemClickListener().onItemClick(lv, v, position, id);
}