ListView に、addHeaderView や addFooterView を使用してヘッダ、フッタに View を追加した場合、
注意がひつようで、以下の様な場合、ListView#getAdapter を実行すると、HeaderViewListAdapter を取得することになる。
以下のようにコードでは、、
ListView mListview;
:
mListview.addFooterView(mFooterView);;
mListview.setAdapter(new ArrayAdapter<FooItem>(this, 0, mList){
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getView(int position, View convertView, ViewGroup parent){
View =
:
// 省略
:
return view;
}
});
----
*1.notifyDataSetChanged()
というコードは成立しない。
ClassCastException : HeaderViewListAdapter cannot be cast to android.widget.BaseAdapter
となる。
以下のようにする必要がある。
HeaderViewListAdapter headerViewListAdapter = (HeaderViewListAdapter)mListview.getAdapter();
((BaseAdapter)headerViewListAdapter.getWrappedAdapter()).notifyDataSetChanged();
1行で書くなら、、、
(BaseAdapter)*2.getWrappedAdapter()).notifyDataSetChanged();