Android FirebaseRecyclerAdapter刷新所有项目

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());

我有一个FirebaseRecyclerAdapter。我想给物品编号。 如果我有5项,比如

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();