[解決済み] RecyclerViewによるアクティビティ間の状態の保存/復元
2023-06-30 02:35:31
質問
私は ListViews を RecyclerViews に移行しています。リストビューで私は説明された一般的なテクニックを使用しました。 ここで を使用して、アクティビティ間のスクロール位置を保存および復元していました。
RecyclerViewsで同じことをするにはどうしたらいいでしょうか? そのために
RecyclerView.onSaveInstanceState()
があるように見えますが
protected
にアクセスできるようなので、直接使うことはできません。
どのように解決するのですか?
OK、それで私自身の質問に答えます。私が理解しているように、レイアウト コードとビュー リサイクル コードが分離されたので (そのためこの名前が付けられました)、レイアウト状態を保持する (そしてそれを復元する) 責任を負うコンポーネントは、現在では
LayoutManager
で使用されています。
このように、状態を保存するために同じパターンを使いますが、その際に レイアウトマネージャ であり、リサイクルビューではありません。
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
// Save list state
mListState = mLayoutManager.onSaveInstanceState();
state.putParcelable(LIST_STATE_KEY, mListState);
}
の状態を復元する。
onRestoreInstanceState()
:
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
// Retrieve list state and list/item positions
if(state != null)
mListState = state.getParcelable(LIST_STATE_KEY);
}
次に、LayoutManagerを更新します(ここでは
onResume()
):
@Override
protected void onResume() {
super.onResume();
if (mListState != null) {
mLayoutManager.onRestoreInstanceState(mListState);
}
}
関連
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] RecyclerView onClick
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ListViewに戻ったときのスクロール位置の維持/保存/復元
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?