发布评论时更新Recyclerview

时间:2016-10-04 10:39:47

标签: android android-fragments android-activity android-recyclerview notifydatasetchanged

希望你能帮忙解决这个问题。

我有PostFragment,其中包含RecyclerView个帖子的所有帖子。我们的想法是让用户点击FAB,将其带到NewPostActivity,允许他们回复。如何按{&1 39}发布'在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

我试着在这里读书但是找不到合适的东西。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以选择在活动中创建静态方法:

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

然后在PostFeedDataFactoryCallback()之前的finish()两种方法中调用它。

此外,如果您将第二个类作为活动启动,则始终可以将其作为startActivityForResult()启动,然后实现方法onActivityResult(),以通知适配器进行更改。在这种情况下,您在每个finish()之前添加的内容是:

setResult(Activity.RESULT_OK, your_data);

在这里查看示例: https://tylenoly.wordpress.com/2010/10/27/how-to-finish-activity-with-results/

答案 1 :(得分:0)

我没有在代码中看到您在适配器中添加新帖子的部分。 您必须setItems然后调用notifyDatasetChanged才能生效。

如果PostFragment在ActivityA中与NewPostActivity不同,那么您可以使用PostFragment生命周期来刷新适配器,方法是将所有帖子检索为最简单(不是更有效)的解决方案。

答案 2 :(得分:0)

有很多方法可以做到这一点,但最有效的方法是事件总线。这是一个例子:https://github.com/greenrobot/EventBus
我建议您最好使用事件总线开始构建应用程序,作为活动,片段和事件线程之间的通信方式。这可能不是您正在寻找的答案,但绝对是一个更好的解决方案。