Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否可以封装成把 数据abstract class HiDataItem<DATA, VH : RecyclerView.ViewHolder>(data: DATA? = null) #471

Open
woyoudianhuai opened this issue Jan 1, 2025 · 2 comments

Comments

@woyoudianhuai
Copy link

描述

是否可以封装成把 数据abstract class HiDataItem<DATA, VH : RecyclerView.ViewHolder>(data: DATA? = null)

理由

这样的话,封装成这样调用
private fun updateUI(data: HomeModel) {

    val dataItems = mutableListOf<HiDataItem<*, *>>()
    data.bannerList?.let {
        dataItems.add(BannerItem(it))
    }

    data.subcategoryList?.let {
        dataItems.add(GridItem(it))
    }

    data.goodsList?.forEachIndexed { index, goodsModel ->
        dataItems.add(
            GoodsItem(
                goodsModel,
                TextUtils.equals(categoryId, DEFAULT_HOT_TAB_CATEGORY_ID)
            )
        )
    }
    finishRefresh(dataItems)
}

是否可扩展性就更高了

参考实现

是否可以参与实现

是否可以封装成把 数据abstract class HiDataItem<DATA, VH : RecyclerView.ViewHolder>(data: DATA? = null)

由于本项目参与者的技术及精力有限无法满足大部分开发者的需求, 欢迎开发者参与贡献

@woyoudianhuai
Copy link
Author

这样多布局成了数据驱动了

@liangjingkanji
Copy link
Owner

liangjingkanji commented Jan 1, 2025

真正的数据驱动是删除View都不会报错

文档中第二种方式实现接口 不就是如此吗?
并且这不是严格意义的数据驱动,使用Databinding才是数据驱动

另外你这种方式会导致列表不知道何处就出现未知的条目类型, 所以我不推荐
BRV要求严格注册过的类型才允许展示, 方便追踪和排查问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants