内容
LazyColumnで一覧を表示する際にローディングのフッターを表示したい。どうすればよいか。
対応
LazyColumn、LazyVerticalGridなどで一覧を表示する場合、通常は各Scope関数であるitems
に一覧データを渡してアイテムごとに処理を行うが、単にLazyColumnの末尾にFooterを書いただけではスクロールしてくれない。そこで、item()
を使って記述することで簡単にスクロール可能なヘッダー、フッターが実現できる
LazyColumn {
item {
Header()
}
items(){
// 一覧のアイテムを表示
}
item {
Footer()
}
}
当初は item()
にもキーをパラメータとして渡していたが、
そうすると勝手に最後までスクロールしてフッターを表示しようとしていたのでキーはセットしないことにした。
ただしこの場合はitemsで返すキーと重複しないように注意が必要。
まとめ
itemsとitemを並べて書けるのが盲点だった。同様にしてitemsを2回記述するなどすれば複数のリストをつなげるようなことも簡単にできる(Keyの重複に注意。重複するとクラッシュ)