そのまとめ。
長いので、項目ごとに分けました。
今回は 「Headers and footers」
--------------------------------------
Google I/O の「The world of ListView」のページは こちら
セッションのスライドはこちら
agenda
• Virtualization and adapters
• Item properties
• Headers and footers
• List selectors
• Other features
• Gotchas and don'ts
--------------------------------------
■ Headers and footers
* Fixed
fixed header/footer は簡単。次のように
LinearLayout でOK
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- ... -->
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1.0" />
</LinearLayout>
* Scrolling
一緒にスクロールする header/footer はメソッドが用意されている
twitter の reload / more load みたいなやつ。
• ListView.addHeaderView()
• ListView.addFooterView()
• setAdapter() の前に呼ばなければならない
• isSelectable == Adapter.isEnabled()
– Sorry, our bad(混乱する名前にしちゃってごめんね。。。)
addHeaderView() と addFooterView() は isSelectable という
パラメータを保持している。
これは、使われている final adapter が items が有効になっている
リストに report back するかどうかに対応する。
「ちょっと混乱する名前だね」って言ってた。
(This corresponds to whether or not the final adapter
being used will report back to the list that these
items are enabled.)
* Wrapped adapter
ListView では、内部的に別の adapter の中に your adapter を
wrapping することで、scrolling header / footer を実現している。
そのため、最初の最後の要素(item)では、異なるタイプの view を返す。
よって、setAdapter で渡した adapter と getAdapter
で返ってくる adapter は異なる。ちょっと注意が必要。
ListView list = ...;
list.addHeaderView(myHeader);
list.addFooterView(myFooter);
list.setAdapter(myAdapter);
boolean same = list.getAdapter() == myAdapter;
// same == false!
// getAdapter() returns a
// android.widget.HeaderViewListAdapter
// same == false!
返信削除// getAdapter() returns a
// android.widget.HeaderViewListAdapter
はそういう意味だったのですね!ありがとうございます。