2017-11-21 11 views
0

あなたがフォローしているユーザーの投稿を表示するHomeFragmentを持つアプリを開発しています。今度はそれぞれの投稿に「Like」と「Comment」オプションがあり、ユーザーのプロフィールや名前をクリックするとプロフィールにリダイレクトされ、彼/彼女の投稿がすべて表示されます。もう一度ポストをクリックすると、ViewPagerを実装した詳細の投稿画面にリダイレクトされ、左または右にスワップしてポストを変更できます。アプリ全体のオブジェクトの状態を維持し、同時にUIを変更する方法

私の質問は、好きな人とコメントの数が同じで、1つの投稿が好きなら、すべての活動(ホーム、ユーザープロフィール、投稿の詳細)に反映する必要があります。

現在、私はstartActivityForResultとonActivityResultを使用してこれらのすべてを処理しています(例:ポジション2でのポストが好きで、バックボタンをクリックすると、そのポジションを新しいカウントで送信し、 at HomeFragment)これは非常に混乱していると私は適切な解決策ではないと思う。

これを処理するデザインパターンやその他の仕組みはありますか?

あなたが私の質問を得ていない場合は、私に教えてください。私はもっと詳しく説明します。

ありがとうございます。

+0

あなたはサーバーを持っていませんか?すべてのクライアントはベースですか? –

+0

データベースを使用してデータを保存します。 –

+0

はい...私はサーバーを持っています。 – chetan

答えて

0

singltone classを作成して、すべての投稿の好き嫌いやコメントを保持できます。 アクティビティ/フラグメントを開くたびに、このクラスからデータを取得します。 ユーザーが好き嫌いやコメントを追加するたびに、このクラスにデータをプッシュします。

私はまた、あなたが私のアプリの中でMVP pattern

1

で私のアプローチを見てみお勧め:

活動では、私は、サーバーからデータをロードする意向サービスを開始するのonCreate。インテントサービスのデータはサーバーからロードされ、解析されてローカルデータベースにプッシュされます(私は超高速のRealm databaseを使用します)。インテントサービスが終了すると、UIはコンテンツを更新するように通知されます。以前のアクティビティに戻ると、データベースからデータをリロードしてUIをリフレッシュするonResumeが呼び出されます。

UIは、すべてのデータが格納されているローカルデータベースでのみ機能します。新しいデータがバックグラウンドスレッドにロードされると、このデータもローカルデータベースにプッシュされます。したがって、データベースに常に最新のデータが含まれているため、アクティビティ間にロードされたデータ(必要なオブジェクトIDのみ)を送信する必要はありません。

+0

問題は、HomePageサーバーで、あなたがフォローしているすべてのユーザーの投稿を返すことです。特定のユーザーをクリックすると、サーバーは選択したユーザーのすべての投稿を返します。今あなたはそのユーザーのいくつかの投稿を好きでHomePageに戻ってきました。そのユーザーの投稿を変更したいと思います。 – chetan

+0

ローカルデータベースには、すべてのデータが保存されます。したがって、特定のユーザーのすべての投稿をユーザーの詳細で表示するには、post.user_id =?のローカルデータベースでクエリを作成します。あなたが彼の投稿が好きなときには、この変更はローカルデータベースにも保存されていますので、ホームページに戻ってデータを更新すると最新の情報になります:)申し訳ありません。 – koso

+0

私は作業中のプロジェクトスコープにないので、ローカルデータベースを使用していません。ホームページはページングのために一度に10個の投稿しか得られず、特定のユーザーのすべての投稿が含まれていません。特定のユーザーをクリックしてそのユーザーのプロファイルアクティビティをクリックすると、ページングを再度実装するそのユーザーのすべての投稿を取得するための別のAPIが用意されています。 – chetan

関連する問題