我已将RecyclerView与Firestore数据库一起使用。
[每当我按Feed帖子上的like按钮时,回收站视图就会转到第一篇文章。单击“赞”按钮涉及对FeedPost
对象进行1次写入和1次更新操作。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View fragView = inflater.inflate(R.layout.fragment_feed, container, false);
db = FirebaseFirestore.getInstance();
feedRecyclerView = (RecyclerView)fragView.findViewById(R.id.feed_recycler_view);
setUpFeedRecyclerView();
return fragView;
}
private void setUpFeedRecyclerView() {
feedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
getFeed();
}
private void getFeed() {
db.collection("XYZ")
.orderBy("time_posted", Query.Direction.DESCENDING).limit(100)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot snapshots, FirebaseFirestoreException e) {
if (e != null) {
return;
}
List<FeedPost> feedList = new ArrayList<>();
for (QueryDocumentSnapshot doc : snapshots) {
feedList.add(doc.toObject(FeedPost.class));
}
feedAdapter = new FeedAdapter(feedList);
feedRecyclerView.setAdapter(feedAdapter);
feedAdapter.notifyDataSetChanged();
}
});
}
[我想知道每当单击赞按钮时如何防止滚动到回收站视图的顶部。
避免在事件回调中设置适配器。在设置视图时设置适配器,然后只更新其中的数据(最好使用正确的notifyItemInserted / Removed / etc方法)。