0

コメントを投稿すると、Recyclerviewが更新されます

私は、スレッドのすべての投稿のRecyclerViewを含むPostFragmentを持っています。考え方はユーザーがFABをクリックして、NewPostActivityに返信することです。返信することができます。 PostFragmentのアダプタを更新するにはどうすればいいですか?NewPostActivityの「投稿」を押してください。

現時点では、フラグメントにonResumeを試しましたが、動作しません。私の「ポスト」ボタンをクリックしたときのコードです。

private void addPost() { 

    String newPost = replaceHTMLTags(mPostMessage.getHtml()); 
    String threadID = PreferenceConnector.readString(getApplicationContext(), 
      "threadID"); 
    String username = PreferenceConnector.readString(getApplicationContext(), 
      "username"); 

    mDataFactory = new PostFeedDataFactory(this); 

    mDataFactory.createNewPost(threadID, newPost, username, 
      new PostFeedDataFactory.PostFeedDataFactoryCallback() { 
       @Override 
       public void onPostDataReceived(PostResponse response) { 
        Toast.makeText(getApplicationContext(), "Posted successfully", 
          Toast.LENGTH_LONG).show(); 
        finish(); 
       } 

       @Override 
       public void onPostDataFailed(Exception exception) { 
        Toast.makeText(getApplicationContext(), exception.getMessage(), 
          Toast.LENGTH_LONG).show(); 
        finish(); 

       } 
      }); 
} 

そして、私のonResumeは、基本的にはちょうど

@Override 
public void onResume() { 
    super.onResume(); 
    if (mAdapter != null) { 
     mAdapter.notifyDataSetChanged(); 
    } 
} 

である私はここにアップ読んでみましたが、本当にこれに適した何かを見つけることができません。

ありがとうございます。

if (mAdapter != null) { 
     mAdapter.notifyDataSetChanged(); 
    } 

そしてfinish()PostFeedDataFactoryCallback()の両方の方法でそれを呼び出す:

+0

投稿されたデータは、 'PostFragment'にある同じリストに挿入されていますか? –

+0

はい@ReazMurshed – BilalMH

+0

アダプターとリストの設定方法をコードでお知らせください。リストに新しいデータが更新されているとは思われません。 'onPostDataReceived'はリストを更新していません –

答えて

1

はこれを行いますあなたの活動の静的メソッドを作成するオプションがあります。

アクティビティとして2番目のクラスを開始する場合は、いつでもstartActivityForResult()として開始し、メソッドonActivityResult()を実装して、変更をアダプターに通知することができます。例えば、ここで

setResult(Activity.RESULT_OK, your_data); 

ルック: https://tylenoly.wordpress.com/2010/10/27/how-to-finish-activity-with-results/

+0

mAdapterは別のクラスにありますが、どうすればいいですか? – BilalMH

+0

申し訳ありません、今すぐ読んでください –

+0

これはまだ混乱しています。これは私が実際にやったことのないビットの1つです。 – BilalMH

0

私はあなたが新しいポストを追加するコードの一部に表示されていないこの場合は、どのようなあなたは、これがある)(各仕上げの前に追加しますアダプターに入れます。 setItemsを設定してから、notifyDatasetChangedを呼び出して効果を持たせる必要があります。

PostFragmentがNewPostActivityと異なるActivityAにある場合、PostFragmentライフサイクルを使用して、すべての投稿を最も効率的ではない最も簡単なソリューションとして取得してアダプタを更新することができます。

+0

フラグメントを残してから、それはrecyclerViewに追加されます。私のaddPostメソッドはAPIコールを作成してデータベースに追加します。だから私はそれをアダプターにどのように追加しますか? – BilalMH

+0

PostFragment onResumeでは、データベースからの投稿をretieveしてアダプタに設定するコードを追加する必要があります。したがって、フラグメントonResumeが呼び出されるたびに、recyclerviewは最新の状態にリフレッシュされます。 ビュー間の通信のための他の方法はEventBusライブラリーですが、ビューのライフサイクルを通じてできることにイベントを使用することはライブラリーの過度の使用です。 –

0

これを実行する方法はたくさんありますが、最も効率的なのはイベントバスです。ここに例があります:https://github.com/greenrobot/EventBus
アクティビティ、フラグメント、イベントスレッド間の通信手段としてイベントバスを使用してアプリケーションを構築することをお勧めします。これはあなたが探している答えではないかもしれませんが、間違いなく良い解決策です。

関連する問題