活动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);
}
});
}
答案 0 :(得分:0)
您可以使用startActivityForResult
代替startActivity
因此,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)
好的,这就是我要做的:
startActivityForResult
调用PostActivity
方法打开CommentActivity
CommentActivity
中添加/删除/编辑评论后,我将更新存储库中的列表并以正确的结果完成活动PostActivity
中,我将覆盖onActivityResult
方法来检查CommentActivity
是否完成结果,该结果将告诉我刷新RecyclerView中的列表PostActivity
的存储库中获取更新的列表,并在Adapter中对其进行更新