Skip to content

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

Open

Description

@woyoudianhuai

描述

是否可以封装成把 数据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)

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

Activity

  1. woyoudianhuai commented on Jan 1, 2025

    @woyoudianhuai
    Author

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

  2. liangjingkanji commented on Jan 1, 2025

    @liangjingkanji
    Owner

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions