BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

推荐使用BRV框架替代不再维护的BRVAH

Open liangjingkanji opened this issue 3 years ago • 13 comments
trafficstars

BRVAH不再维护也不接受新的PR, 也无法满足新的kt特性和功能

可以尝试 BRV

项目地址 https://github.com/liangjingkanji/BRV
使用文档 https://liangjingkanji.github.io/BRV/

  • 功能更多/代码更简洁
  • 维护时间超过3年
  • issues全部已解决
  • 更详细的使用文档
  • 更易读的使用示例
  • 更好的扩展性

liangjingkanji avatar Feb 27 '22 09:02 liangjingkanji

不过,看起来还不错。

zhaoxiuyu avatar Mar 01 '22 10:03 zhaoxiuyu

迁移成本太高了

protectedMan avatar Mar 02 '22 08:03 protectedMan

@protectedMan

  1. 支持类似BRVAH的数据绑定方式, 代码复制过去就行了
  2. 不迁移, 直接新的列表用新框架写就行了. 没有必须要全部替换一说

liangjingkanji avatar Mar 02 '22 08:03 liangjingkanji

支持树形结构吗

24suixinsuoyu avatar Mar 02 '22 14:03 24suixinsuoyu

支持树形结构吗

支持分组无限级, 支持树形结构

liangjingkanji avatar Mar 03 '22 06:03 liangjingkanji

真的假的。。

lovejhf avatar Mar 03 '22 06:03 lovejhf

真的假的。。

点开文档和demo就能看出和一般框架的不同了

liangjingkanji avatar Mar 07 '22 14:03 liangjingkanji

不说别的, 就凭你这头像我就要去看看你的项目. 如果可以就换了

actor20170211030627 avatar Mar 09 '22 13:03 actor20170211030627

支持树形结构吗

支持分组无限级, 支持树形结构

你好,我在项目中引用了BRV,现在遇到一个问题想请教一下,希望拨冗解惑。 现在是要实现一个嵌套分组,而且是rv嵌套rv,我这边按照文档和demo的步骤来的,不同的是,getData() 是网络请求后端接口所得,但是最终UI显示不出来也没有报bug(log中可以看到接口数据返回都是正常的)。 我debug后大致判断,应该是没有对getData()的结果做监听、导致BindingAdapter setUp()时getData()方法还没有返回、也就没有数据(models 赋值为null)。。这个数据不一致的问题希望能帮解惑,十分感谢~

24suixinsuoyu avatar Mar 10 '22 11:03 24suixinsuoyu

支持树形结构吗

支持分组无限级, 支持树形结构

你好,我在项目中引用了BRV,现在遇到一个问题想请教一下,希望拨冗解惑。 现在是要实现一个嵌套分组,而且是rv嵌套rv,我这边按照文档和demo的步骤来的,不同的是,getData() 是网络请求后端接口所得,但是最终UI显示不出来也没有报bug(log中可以看到接口数据返回都是正常的)。 我debug后大致判断,应该是没有对getData()的结果做监听、导致BindingAdapter setUp()时getData()方法还没有返回、也就没有数据(models 赋值为null)。。这个数据不一致的问题希望能帮解惑,十分感谢~

好像看你在群里咨询过这个问题. 你可以在BRV项目创建个issues.

rv.setup{
   //....
}.models = getData()

你使用的是异步回调网络请求怎么可能直接通过函数返回. 你得使用协程网络请求: Net才可以做到函数返回请求结果

或者你在请求成功以后执行rv.models = result

开始还没看懂你说的setUp是什么函数....

liangjingkanji avatar Mar 10 '22 12:03 liangjingkanji

@24suixinsuoyu

昨天刚用上,贼香。你说的异步,看是不是这个?

class NewsActivity : AppCompatActivity() {

    private val rvNews = RecyclerView(TODO())
    private val rvUser = RecyclerView(TODO())

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initNews()
        initUser()
    }

    private fun initNews() {
        // 你可以理解, RecyclerView.setup{}返回的就是一个adapter.
        val adapter = rvNews.setup {
            // ...
        }

        thread {
            val data = List(10) { "item $it" }
            runOnUiThread {
                adapter.models = data

                // 或使用RecyclerView扩展函数
                // rvNews.models = data
            }
        }
    }

    private fun initUser() {
        lifecycleScope.launch {
            rvUser.setup {
                // ...
            }.models = getData()
        }
    }

    private suspend fun getData(): List<String> = suspendCoroutine { continuation ->
        thread {
            val data = List(10) { "item $it" }
            continuation.resume(data)
        }
    }
}

TxcA avatar Mar 10 '22 13:03 TxcA

支持树形结构吗

支持分组无限级, 支持树形结构

你好,我在项目中引用了BRV,现在遇到一个问题想请教一下,希望拨冗解惑。 现在是要实现一个嵌套分组,而且是rv嵌套rv,我这边按照文档和demo的步骤来的,不同的是,getData() 是网络请求后端接口所得,但是最终UI显示不出来也没有报bug(log中可以看到接口数据返回都是正常的)。 我debug后大致判断,应该是没有对getData()的结果做监听、导致BindingAdapter setUp()时getData()方法还没有返回、也就没有数据(models 赋值为null)。。这个数据不一致的问题希望能帮解惑,十分感谢~

好像看你在群里咨询过这个问题. 你可以在BRV项目创建个issues.

rv.setup{
   //....
}.models = getData()

你使用的是异步回调网络请求怎么可能直接通过函数返回. 你得使用协程网络请求: Net才可以做到函数返回请求结果

或者你在请求成功以后执行rv.models = result

开始还没看懂你说的setUp是什么函数....

好的,谢谢,我研究研究

24suixinsuoyu avatar Mar 10 '22 16:03 24suixinsuoyu

@24suixinsuoyu

昨天刚用上,贼香。你说的异步,看是不是这个?

class NewsActivity : AppCompatActivity() {

    private val rvNews = RecyclerView(TODO())
    private val rvUser = RecyclerView(TODO())

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initNews()
        initUser()
    }

    private fun initNews() {
        // 你可以理解, RecyclerView.setup{}返回的就是一个adapter.
        val adapter = rvNews.setup {
            // ...
        }

        thread {
            val data = List(10) { "item $it" }
            runOnUiThread {
                adapter.models = data

                // 或使用RecyclerView扩展函数
                // rvNews.models = data
            }
        }
    }

    private fun initUser() {
        lifecycleScope.launch {
            rvUser.setup {
                // ...
            }.models = getData()
        }
    }

    private suspend fun getData(): List<String> = suspendCoroutine { continuation ->
        thread {
            val data = List(10) { "item $it" }
            continuation.resume(data)
        }
    }
}

嗯,就是异步数据刷新问题,thx~

24suixinsuoyu avatar Mar 10 '22 16:03 24suixinsuoyu