在RecyclerView中首先显示Firebase数据库的最后一个子项

时间:2017-10-03 15:37:39

标签: android firebase firebase-realtime-database android-recyclerview

我将一些数据存储在firebase中并在firebase RecyclerView中检索它。 数据显示正常但我想在myrecyclerview中从下到上显示数据,因为最新添加的子项将添加到底部,我想在myrecyclerview顶部显示最新添加的子项。

我试过了myrecyclerview.setReverseLayout(true);,但这让我把我的活动放在第一个孩子可用的最底层。相反,我想在活动开启时展示我最新的孩子。

3 个答案:

答案 0 :(得分:1)

setStackFromEnd = true setReverseLayout = true

这两者之间的区别在于setStackFromEnd将视图设置为显示最后一个元素,布局方向将保持不变,而setReverseLayout将更改适配器添加的元素的顺序。
在您的情况下,请使用此

layoutManager.setReverseLayout(true);

但请勿使用此

layoutManager.setStackFromEnd(true);

这样的事情:

mLinearLayoutManager = new LinearLayoutManager(this);
mLinearLayoutManager.setReverseLayout(true);
//mLinearLayoutManager.setStackFromEnd(true);
yourRecyclerView.setLayoutManager(mLinearLayoutManager);

答案 1 :(得分:0)

你也可以试试这个:

getItem(int position)方法添加到FirebaseRecyclerAdapter as:

@Override
public ItemClass getItem(int position) {
    return super.getItem(getCount() - position - 1);
}

答案 2 :(得分:0)

我看到该问题未被检查为正确答案。

这是您应该做的:

将数据添加到 ArrayList 时,设置索引,然后第二步添加具有索引位置的 notifyItemInserted

这是完整的代码:

 val news = ArrayList<Book>()
            for (convSnapshot in dataSnapshot.children) {
                val conv = convSnapshot.getValue(Book::class.java)
                news.add(0, conv!!) // here we add index for ArrayList
            }
            val adapter = BooksListAdapter(news)
            mBooksListRecyclerView!!.adapter = adapter
            adapter.notifyItemInserted(0) // here we notifyItemInserted
            adapter.notifyDataSetChanged()
        }