在我的应用程序中,我实现了导航抽屉,该抽屉显示了支票簿的银行帐户列表。我编写了一个处理此列表的AccountAdapter类,并在NavigationDrawerFragment类中使用以下生成的代码:
mDrawerListView.setAdapter(mAccountAdapter);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
AccountAdapter adapter = (AccountAdapter) adapterView.getAdapter();
Cursor cursor = adapter.getCursor();
if(cursor != null && cursor.moveToPosition(i)){
// Do nothing!
}
}
});
但是,在
onItemClick
方法的第一行出现错误:java.lang.ClassCastException:android.widget.HeaderViewListAdapter无法转换为com.example.android.checkit.AccountAdapter
这是处理此ListView的itemClick事件的正确方法吗?如何调整代码以避免此错误?
最佳答案
使用AccountAdapter adapter = (AccountAdapter) adapterView.getWrappedAdapter()
(doc).
更新:
HeaderViewListAdapter headerViewAdapter = (HeaderViewListAdapter) adapterView.getAdapter();
AccountAdapter adapter = (AccountAdapter) headerViewAdapter.getWrappedAdapter();