更新recyclerview中帖子的评论计数

时间:2020-06-16 07:57:18

标签: java android android-recyclerview

活动A具有一个回收站视图,该视图的每一行都作为一个帖子,现在每个帖子都有一个评论计数文本视图,该视图启动一个评论活动,用户可以在其中查看评论并添加评论。

现在的问题是,添加评论后,评论活动结束或按返回按钮返回帖子页面后,如何在活动A的回收者视图的特定行中更新评论计数。但是我不想再次重新加载回收器视图,因为它会使用户从当前位置分散注意力。

请引导我朝正确的方向前进。下面是我的Recyclerview适配器代码段。

public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
        int viewType = getItemViewType(position);
        final Posts posts = postsList.get(position);
        final viewHolderPost viewHolderPost = (viewHolderPost) viewHolder;

        viewHolderPost.commentcount_wrap.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(v.getContext(), CommentViewerActivity.class);
                        intent.putExtra("post_id", posts.getPost_id());
                        v.getContext().startActivity(intent);
                    }
                });
}

3 个答案:

答案 0 :(得分:0)

您可以使用startActivityForResult代替startActivity

参考:https://developer.android.com/reference/android/app/Activity#startActivityForResult(android.content.Intent,%20int,%20android.os.Bundle)

因此,CommentActivity完成后,上一个活动将收到CommentActivity产生的回调,您将处理该结果并更新recyclerview的适配器。

希望有帮助。 :)

答案 1 :(得分:0)

您可以通知适配器特定位置有更改。 检查:adapter.notifyItemChanged(1)

-编辑-

在活动A上添加此内容。

override fun onResume() {
    super.onResume()
    if(lastPosition != -1)
        recycler_test.adapter?.notifyItemChanged(lastPosition)
}

您的适配器应该提供这样的回调。

recycler_test.adapter = CustomAdapter(Controller.shared.myList){ positionClicked ->
        //This block of code will be called every time a user clicked a comment.

        lastPosition = positionClicked

        val intent = Intent(applicationContext, ActivityB::class.java)
        intent.putExtra("position", positionClicked)
        startActivity(intent)
    }

答案 2 :(得分:0)

好的,这就是我要做的:

  1. 创建公共对象(最好是存储库),在这里我将带有注释的帖子列表存储在内存中。
  2. 单击“发布”时,我将从startActivityForResult调用PostActivity方法打开CommentActivity
  3. CommentActivity中添加/删除/编辑评论后,我将更新存储库中的列表并以正确的结果完成活动
  4. PostActivity中,我将覆盖onActivityResult方法来检查CommentActivity是否完成结果,该结果将告诉我刷新RecyclerView中的列表
  5. 如果是这样,我将从PostActivity的存储库中获取更新的列表,并在Adapter中对其进行更新