4

私は、Android ListView に対するかなり一般的な要求であると想像することを行うのに苦労してきました。私の特定のケースでは、この ListView は ListFragment の一部として使用されています。

リストが操作されたときにリスト項目とともに上下にスクロールされる、リストの上下に空白の埋め込み領域が必要です。

私は多くのことを調べましたが、答えを見つけることができなかっただけでなく、誰も質問をしていないことから、何かを見落としているのではないかと思います.

私の最初の試みは次のとおりです。

 <ListView android:id="@id/android:list"
    android:paddingTop="16dip"
    android:paddingBottom="16dip"
    android:clipToPadding="false"...

これは必要なパディングを提供しますが、残念ながら「clipToPadding」プロパティはブリキで言うことをしません。リストをスクロールすると、アイテムはListViewの可視領域の上部と下部から16dip切り取られます。私が探しているものではありません為に。なぜそれがまだ切り取られているのか考えていますか?

私の 2 番目の試みは、ListView API を介して透明なヘッダー ビューとフッター ビューをリストにプログラムで追加することです。

addHeaderView();
addFooterView();

これは美しく機能し、私が探している正確な相互作用を提供してくれます。残念ながら、フラグメントがバックスタックから出てくるとバラバラになります。古いヘッダー ビューとフッター ビューはなくなり、フラグメントがバック スタックにプッシュされたときに残りのビューと共に破棄されますが、新しいビューを追加しようとすると、リスト アダプターが既に設定されているというエラーが表示されます。ヘッダー/フッター ビューは、残念ながらコンポーネントのライフサイクル ループ全体が発生したアダプターの設定の前にのみ設定できます。

そのエラーに対して私が見た唯一の「解決策」は、リストアダプターを無効にし、フッター/ヘッダーを再度追加してから、リストアダプターを元の値に設定することです。これは私に「ハック」と叫び、そもそも正しく使用していないと思わせます。

目的の機能を賢明な方法で機能させる方法はありますか? ListFragment の拡張は私の問題の一部ですか? ListView で構成された独自のフラグメントをロールしたほうがよいでしょうか?

ありとあらゆる助けをいただければ幸いです。

4

0 に答える 0