liangjingkanji / BRV

[使用文档] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大
http://liangjingkanji.github.io/BRV/
MIT License
2.59k stars 327 forks source link

rv嵌套rv,滑动冲突 以及横向布局不起作用 #319

Closed diandian8801 closed 1 year ago

diandian8801 commented 1 year ago
val testlist = findViewById<RecyclerView>(R.id.list1)

        testlist.linear().setup {

            addType<CsPost> {
                when (type) {
                    0 -> R.layout.item_cs         //这个布局中有Rv
                    else -> R.layout.item_cs2
                }
            }

            onCreate {

                when (itemViewType) {

                    R.layout.item_cs -> {
                        val rv = getBinding<ItemCsBinding>().rvOne
                        rv.apply {
                            val fx = LinearLayoutManager(this@MainActivity)
                            fx.orientation = LinearLayoutManager.HORIZONTAL    //不起作用?
                            layoutManager = fx

                            linear().setup {
                                addType<CsPost>(R.layout.rv_one_item)
                            }

                        }
                    }
                }
            }

            onBind {
                when (itemViewType) {
                    R.layout.item_cs -> {
                        val rv = getBinding<ItemCsBinding>().rvOne
                        rv.models = getChildList()
                    }
                }
            }

}.models = vm.Sdata.value

================ 在嵌套的子RV中,被父RV消费了滑动事件。 子RV中横向布局不起作用?

==================

没有找到滑动冲突的处理方式。

287138531 commented 1 year ago

val fx = LinearLayoutManager(this@MainActivity) fx.orientation = LinearLayoutManager.HORIZONTAL //不起作用? layoutManager = fx

上面的去掉

                    linear().setup {
                        addType<CsPost>(R.layout.rv_one_item)
                    }

你这代码设置两次。。。 LinearLayoutManager
用下面这行就行了。。 .linear(orientation = LinearLayoutManager.HORIZONTAL)

287138531 commented 1 year ago

你先看懂brv封装的dsl到底啥意思再写代码。。。。 linear() 是什么意思,你点进去看看

liangjingkanji commented 1 year ago
  1. 如果两个列表都是同一滑动方向, 建议禁止被嵌套的列表的滑动linear(scrollEnabled = false), 否则会导致滑动惯性丢失

  2. 正如 @287138531 所说, 建议你调用方法的时候稍微看下注释或者源码理解下方法是什么作用, 不要无脑复制粘贴

建议先搜索或者自己排查这些基础问题, 否则会浪费我维护项目精力, 你可以看到大部分问题全是寻找帮助而非bug

diandian8801 commented 1 year ago

@liangjingkanji @287138531 首先感谢二位哥哥的指点。你们简单的几句话,对我帮助很大。

下面的布局,困扰了我3年多。以前用NestedScrollView嵌套RV,RV无法复用,数据量大必卡顿。后来也明白了卡顿的原因。2019年的时候,百度,CSDN上没有找到解决办法。也就搁浅在哪里了。

人菜瘾大技术差,这不又上瘾了,想试试大哥的这个框架,Fragment页里,想用一个RV里面嵌套4RV去实现。

于是先练习BRV的实例,参照文档开头试着写。注解都去看过。太多知识点忘记在哪个文件里了。你不经意的一句话,我就明白去找那个文件,去读那个注解了。

布局

@liangjingkanji @287138531 两位哥哥,在大厂里都怎么去实现这类布局呢?目测BRV嵌套,也要去自己处理复用问题。

liangjingkanji commented 1 year ago

@liangjingkanji @287138531 首先感谢二位哥哥的指点。你们简单的几句话,对我帮助很大。

下面的布局,困扰了我3年多。以前用NestedScrollView嵌套RV,RV无法复用,数据量大必卡顿。后来也明白了卡顿的原因。2019年的时候,百度,CSDN上没有找到解决办法。也就搁浅在哪里了。

人菜瘾大技术差,这不又上瘾了,想试试大哥的这个框架,Fragment页里,想用一个RV里面嵌套4RV去实现。

于是先练习BRV的实例,参照文档开头试着写。注解都去看过。太多知识点忘记在哪个文件里了。你不经意的一句话,我就明白去找那个文件,去读那个注解了。

布局

@liangjingkanji @287138531 两位哥哥,在大厂里都怎么去实现这类布局呢?目测BRV嵌套,也要去自己处理复用问题。

可以参考demo项目中的示例代码: NestedListFragment 或者 HomeFragment