質問: 現在、TwitterのタイムラインのようなUIを持つアプリを開発しておりまして、実装方法に悩んでおります。 あるユーザを選択した時に、ヘッダー部分にユーザのアイコンや自己紹介文を表示し、その下には、当該ユーザのコメントリストが並ぶというありきたりのUIとなります。また、ヘッダ部分は位置が固定ではなく、コメントリストのスクロールと共に上部へスライドしていくというものになります。 そこで、単にListViewを用いて一度実装を行いました。 ArrayAdapterのgetViewをオーバーライドして、positionが0、つまりヘッダ部分のみ異なるレイアウトファイルを適用し、それ以外のpositionについては、コメントを表示するためのレイアウトファイルを適用して、当初予定していたUIは実装が行えました。 その後、これを拡張することになり、ヘッダ部分内にタブ切り替えのようなボタンを配置し、選択されたボタンにより、下位のリスト内容をごっそり切り替えるということになりました。 デフォルトでは、コメントリストなのですが、切り替えボタンを押すと、内容もレイアウトも全く異なるものを表示することになります。(例えば、当該ユーザがフォローしている他ユーザの一覧等。リスト形式であることには変わりません) ヘッダ部分の内容は全く変更せず(ただし、選択されたボタンはハイライト化)、positionが1以降のリストを、内容もレイアウトも異なるものに切り替えるために、皆さんならどのように実装されるかご意見をお聞かせ願えないでしょうか。 要件として、ヘッダー部のスクロール位置の変更はしないという制限があります。 (例えばちょっとだけスクロールしていて、一部が隠れている状態での切替時) 私が今考えているのは、getViewの中で、現在positionが0かそれ以外でレイアウトファイルを切り替えるだけでなく、さらにどの切替ボタンが選択されているかで、適用するレイアウトファイルを増やすというものなのですが、何か強引な感じがして・・・ もっとスマートな方法がございましたら、ご教示いただきたく。 (違うアクティビティなり、フラグメントに切り替えて、前画面と同じ位置にスクロールさせる等?) よろしくお願いいたします。
回答: ヘッダー(タブ)はリストに含めないほうがよいと思います。 Design Support Libraryの`CoordinatorLayout`は使えませんかね? 参考: