【问题标题】:Display Firebase Database last child, first in RecyclerView在 RecyclerView 中首先显示 Firebase 数据库的最后一个子项
【发布时间】:2017-10-03 15:37:38
【问题描述】:

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

我尝试了myrecyclerview.setReverseLayout(true);,但这将我带到了第一个孩子可用的活动的底部。相反,我想在活动开始时展示我最新的孩子。

【问题讨论】:

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


    【解决方案1】:

    setStackFromEnd=truesetReverseLayout=true

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

    layoutManager.setReverseLayout(true);
    

    但不要使用这个

    layoutManager.setStackFromEnd(true);
    

    类似这样的:

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

    【讨论】:

    • 我只使用layoutManager.setReverseLayout(true);
    • 它的 StaggeredGridLayoutManager
    • 你能用线性布局管理器试试吗?
    【解决方案2】:

    你也可以试试这个:

    getItem(int position) 方法添加到您的FirebaseRecyclerAdapter 为:

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

    【讨论】:

      【解决方案3】:

      我发现该问题未被检查为正确答案。

      这是你应该做的:

      将数据添加到您的 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()
              }
      

      【讨论】:

        猜你喜欢
        • 2019-09-28
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 2023-03-07
        • 2020-02-24
        相关资源
        最近更新 更多