我将一些数据存储在firebase中并在firebase RecyclerView中检索它。 数据显示正常但我想在myrecyclerview中从下到上显示数据,因为最新添加的子项将添加到底部,我想在myrecyclerview顶部显示最新添加的子项。
我试过了myrecyclerview.setReverseLayout(true);
,但这让我把我的活动放在第一个孩子可用的最底层。相反,我想在活动开启时展示我最新的孩子。
答案 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()
}