liangjingkanji / BRV

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

addModels指定添加索引位置 #186

Closed iamGGboss closed 2 years ago

iamGGboss commented 2 years ago

问题描述

添加数据时无法指定位置,可以通过 mBinding.rvGallery.mutable.add的方式实现,但是期望作者能通过一个方便的api供人使用

期望行为

期望addModels提供一个index的参数,插入到指定位置

liangjingkanji commented 2 years ago

集合数据操作复杂, 不可能提供所有的方法, 而且我不认为多了一行代码就是不方便

liangjingkanji commented 2 years ago

仔细看了下觉得addModels涉及到了分组数据扁平化, 而且集合本身的addAll也存在方法重载, 的确是brv设计考虑不够全面

liangjingkanji commented 2 years ago

最新版本已添加

/**
 * 添加新的数据
 * @param models 被添加的数据
 * @param animation 是否使用动画
 * @param index 插入到[models]指定位置, 如果index超过[models]长度则会添加到最后
 */
@SuppressLint("NotifyDataSetChanged")
fun addModels(
    models: List<Any?>?,
    animation: Boolean = true,
    @IntRange(from = -1) index: Int = -1
) 
iamGGboss commented 2 years ago

666,我是从BRVAH转过来的,你的框架有BRVAH很多没有的功能,相对来说还是一个新兴框架,希望以后越做越大。插个题外话,其实除了addModels之外,其实可以提供删除Models的api,毕竟model是框架自身维护,对于使用者来说不需要太在意框架实现原理,所以可以提供deleteModel(model),deleteModel(index),然后框架自身再调用notifyItemRemoved,这样的话慢慢成长为一个完全体。

liangjingkanji commented 2 years ago

集合方法那么多全部添加岂不是加都加不完,而且删除集合元素不存在什么实现原理吧

liangjingkanji commented 2 years ago

另外本框架维护时间已经超过三年了

liangjingkanji commented 2 years ago

完全不会rv,也不愿意看文档,不会考虑添加这种冗余方法的

iamGGboss commented 2 years ago

这样,可以的,所以我现在的方案是只把框架的数据引用指向viewmodel的数据,然后viewmodel操作集合,然后通过livedata提供给view订阅状态

liangjingkanji commented 2 years ago

真麻烦, 我感觉liveData和viewModel在这里可有可无