[go: up one dir, main page]

拉取更多

拉取更多

拉取更多(又称下拉加载更多页), 例如聊天界面下拉加载更多页


例如聊天记录界面, 最新的消息在底部, 下拉列表会触发顶部加载历史消息


示例代码

实现原理

将PageRefreshLayout反转, 再将RV反转(相当于RV反转2次等于还原)

rv.setup {
    addType<Model>(R.layout.item_simple)
}

page.upFetchEnabled = true

page.onRefresh {
    // 模拟网络请求2秒后成功
    postDelayed({
        val data = getData()
        addData(data) { index <= 2 }
    }, 1000)
}.showLoading() //  加载中(缺省页)

或使用xml属性app:page_upFetchEnabled

<com.drake.brv.PageRefreshLayout
    android:id="@+id/page"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        app:reverseLayout="true"
        app:stackFromEnd="true" />

    <!--stackFromEnd=true 防止UpFetch时数据不满一屏幕的时候, 对齐底部而不是顶部-->
    <!--reverseLayout=true rv数据排列顺序反转-->

</com.drake.brv.PageRefreshLayout>