Open shirataki707 opened 2 years ago
UIStateに以下の変数を追加し、
val filteredRankingList: List<Item> = emptyList(),
val isSearch: Boolean = false
検索時にisSearch = ture
とし、更新ボタンを押したらfalse
にするようにしました。
isSearchに応じてセットするリストを切り替えてみたのですがどうでしょうか!
// 検索中
if (uiState.isSearch) {
adapter.submitList(uiState.filteredRankingList)
} else if (uiState.repositories != null) {
// リストに値をセット
adapter.submitList(uiState.repositories)
if (uiState.time != null) {
// 時間をセット
binding.timeText.text = uiState.time
}
}
なるほど!isSearchで管理すればobserveのところの処理うまくいきますね(変数名もわかりやすいです).ありがとうございます!また変なコードを書いてしまうことあるとおもうので,遠慮なく指摘していただけると嬉しいです. uiStateの使い方もわかった気がします!動作確認もしましたが問題なさそうでした!
ありがとうございます!こちらこそ色々指摘していただけると助かります!
一度adapter内のListを破棄するのは勿体無い気がするので検索時は別Fragmentを出現させるといった方法を取るのが良いかもしれませんね…ちょっと実装例探してみます。
変更の概要
なぜこの変更をするのか
やったこと
変更内容
影響範囲
どうやるのか
課題
viewModel.uiState.observe(viewLifecycleOwner) { uiState -> if(uiState.repositories != null) { // リストに値をセット adapter.submitList(uiState.repositories) }
備考