scwang90 / SmartRefreshLayout

🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
https://segmentfault.com/a/1190000010066071
Apache License 2.0
24.92k stars 4.95k forks source link

用classic的header和footer模拟微信消息列表(默认不能加载更多,可以下拉加载历史数据),当历史数据加载完毕,禁用下拉刷新,会导致列表滑动冲突 #1314

Open GHHMBird opened 3 years ago

GHHMBird commented 3 years ago

val srl = view.findViewById(R.id.srl) val recycler = view.findViewById(R.id.recycler)

    srl.setEnableLoadMore(false)
    srl.setOnRefreshListener {
        val list = ArrayList<Int>()
        for (index in 100..110) {
            list.add(index)
        }
        adapter.addData(0, list)
        srl.finishRefresh()
        if (adapter.list.size >= 50) {
            srl.setEnableRefresh(false)
        }
    }

    val list = ArrayList<Int>()
    for (index in 1..10) {
        list.add(index)
    }

    recycler.layoutManager = LinearLayoutManager(activity)
    adapter = activity?.let { MessageSystemListAdapter(it, list) }!!
    recycler.adapter = adapter

xml

<com.scwang.smart.refresh.layout.SmartRefreshLayout android:id="@+id/srl" android:layout_width="match_parent" android:layout_height="match_parent">

    <com.scwang.smart.refresh.header.ClassicsHeader
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.scwang.smart.refresh.footer.ClassicsFooter
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</com.scwang.smart.refresh.layout.SmartRefreshLayout>
scwang90 commented 3 years ago

禁用下拉刷新的代码 不要立即执行,给一个延时执行,建议1秒的延时,具体也可以自己调试选择合适的延时时间

VictorChengSir commented 3 years ago

+1 使用 setEnableRefresh(false) 遇到同样场景问题,增加延迟后已解决