は(正確に私のニーズを満たしていないHow can I refresh a previous activity after the back button is pressed?またはBack button and refreshing previous activity、のようないくつかの似質問があります。)私は2つのアクティビティを抱えているリロードデータアクティビティのライフサイクルに戻ったときに
:
- PhotoListActivity:この活動には、複数の写真を表示
RecyclerView
とPhotoListAdapter<ArrayList<PhotoModel>>
が含まれています。 - PhotoDetailActivity:このアクティビティは1枚の写真を表示します。
問題:ユーザーがPhotoListActivityから始まり、写真をクリックしてPhotoDetailActivityで終わる。どちらのアクティビティでも、ユーザーは写真を気に入ることができます。写真が好きであれば、そのようなものが保存されているサーバーへのリクエストが発生します。 PhotoDetailActivityの写真が好きで、戻るボタンを押したときに、PhotoListActivityとそれに対応するPhotoListAdapter<ArrayList<PhotoModel>>
は、アダプターのデータに「not-liked」の写真が含まれているため、 。
更新されたデータを表示するにはどうすればよいでしょうか?
- リロード
onResume
/onRestart
方法 - でサーバから
PhotoListAdapter<ArrayList<PhotoModel>>
のデータがPhotoListAdapter<ArrayList<PhotoModel>>
のArrayListを介してPhotoDetailActivity、ループから更新PhotoModel
バックパスと対応PhotoModel
を更新します。 - 好きな写真のリストを保持するローカルキャッシュ(静的にも、SharedPrefsでも)があります。ユーザーが写真を好む/好きになるたびに、そのキャッシュを更新することができます。次に、PhotoListActivityで今行わなければならないことは、特定の写真のキャッシュエントリが設定されているかどうかをチェックし、
PhotoModel
のものの代わりに同様の値を使用することです。その利点は、更新されたPhotoModel
を常に周回する必要はないということです。
我々は別のサーバリクエストを行う必要はありませんので、第2の解決策は、明らかに好適であるが、それは一種のループに「ハック」PhotoListAdapter<ArrayList<PhotoModel>>
ているようだとのマッチングPhotoModel
を更新します。
アンドロイドでこれを解決する方法はありますか?
を編集し、可能な3番目の解決方法を追加しました。
をあなたはStartActivityForResultを使用し、意図に –