Android FirebaseRecyclerAdapter刷新所有项目
我有一个FirebaseRecyclerAdapter。我想给物品编号。 如果我有5项,比如Android FirebaseRecyclerAdapter刷新所有项目,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个FirebaseRecyclerAdapter。我想给物品编号。 如果我有5项,比如 1 - d 2 - w 3 - c 4 - s 5 - z 当我将一个新项目添加到第一位时:(我需要这样做) 所以我想在新物品到达时为所有物品添加一个新的位置号。所以我想刷新所有位置。 我怎么做 // Set up Layout Manager, reverse layout mManager = new LinearLayoutManager(getActivity());
1 - d
2 - w
3 - c
4 - s
5 - z
当我将一个新项目添加到第一位时:(我需要这样做)
所以我想在新物品到达时为所有物品添加一个新的位置号。所以我想刷新所有位置。
我怎么做
// Set up Layout Manager, reverse layout
mManager = new LinearLayoutManager(getActivity());
mManager.setReverseLayout(true);
mManager.setStackFromEnd(true);
mRecycler.setLayoutManager(mManager);
// Set up FirebaseRecyclerAdapter with the Query
Query postsQuery = getQuery(mDatabase);
mAdapter = new FirebaseRecyclerAdapter<Test, PostViewHolder>(Test.class, R.layout.item_record, PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Test model, final int position) {
viewHolder.bindToPost(model);
}
};
mRecycler.setAdapter(mAdapter);
当新项目到达时,populateViewHolder将运行1次。但旧项目不会刷新。我怎样才能刷新所有页面
getLayoutPosition()执行以下操作:
当创建一个新项目时,如何刷新所有项目?要让适配器刷新其内容,请通知它数据集已更改:
mAdapter.notifyDataSetChanged();
您没有显示您的查询。它需要定义排序顺序,以便在新项目到达或更改时,查询能够自动反映这些更改 由于您希望根据某种职位索引进行排序,因此还需要在数据中添加一个
position
字段,以便查询
底线是:如果您查询定义了一个排序,并且子项的排序会随着时间的推移而变化,那么FirebaseRecyclerAdapter将自动反映这些变化。您只需要确保数据库中的数据是正确的
如果无法创建正确排序数据的查询,则可能不应使用FirebaseRecyclerAdapter,而应使用侦听器读取数据,然后在代码中手动排序数据,然后将其发送到自定义适配器以在RecyclerView中显示
public class PostViewHolder extends RecyclerView.ViewHolder {
public TextView titleView;
public PostViewHolder(View itemView) {
super(itemView);
titleView = (TextView) itemView.findViewById(R.id.tview);
}
public void bindToPost(Test item) {
titleView.setText(String.valueOf(getLayoutPosition())+". "+item.name);
}
}
5 - g
4 - d
3 - w
2 - c
1 - s
0 - z
mAdapter.notifyDataSetChanged();