[CymChad/BaseRecyclerViewAdapterHelper]关于BaseMultiItemQuickAdapter处理两层多布局的问题

2024-08-08 164 views
6

是这样的,一个list里面是多类型,有typeA、typeB、typeC等,然后typeA也可能有多种类型,如typeA1、typeA2、typeA3,其中typeA内有个字段“statusEnum”,就是用“statusEnum”来区分到底是显示typeA1还是typeA2还是typeA3,addItemType方法只能处理第一层的item,但是第二层的我得怎么处理呢?

回答

7

层次和多布局不冲突的啊

1

@FrankKwok 我意思是对于这个情况我现在不知道怎么处理啊,typeA里面还需要分三种可能来展示,请问你有什么好的建议吗

3

@magic0908 主要是不了解你的具体需求

9

@FrankKwok 我贴一段json数据结构你看下吧 如下,这是其中一个type的数据结构。 { "dataList":{ "buyerStarNum":0, "userTypeEnum":"musician", "status":110, "sellerStarNum":0, "orderCustomerId":"9684c45adfd24b9b87480e7ad486dd40", "infoCustomerId":"59485153d5d64ebf8e55dcb1c79a38f5", "cancelReason":"需求变动", "taskInfoId":"a2dde26c3cda4c2ca72a98a9389f08a7", "title":"来一民歌", "nickName":"米兔", "backAmount":0.02, "salary":0.02, "orderId":"7ee8d5b8c4134c8cae663869dd924fd1" }, "topFlag":"订单状态" }, 首先,我根据外层的topFlag去指定typeA的类型,这是第一层;接着,又需要根据status的数值指定到底是typeA1还是typeA2还是typeA3,这是第二层; 我现在遇到的情况是只能根据topFlag显示第一层类型,然后第二层的就不知道怎么解决了。

4

你用委托啊,不要在数据类上去改,创建新的类来适应问题

4

@magic0908 适配器模式解决问题

2

@FrankKwok 这样说吧,第一个item的topFlag的值都是一样的,也就是typeA,唯一不同的就是status这个值,110,105,107分别对应typeA1、typeA2、typeA3,其他的字段完全一样。

8

这个我明白的啊,你准备展示成什么样?

5

@FrankKwok 就是展示一个多类型的recyclerview列表啊,上面贴出来的json数据是整个列表的第一项,但是这个第一项,又有三种不同的类型,然后这个三种不同的类型,我该怎么根据status这个值来进行不同的处理,这就是我目前困惑的地方。 按照正常的写法,在展示第一个item的时候,我应该是在adapter构造方法写 addItemType(ORDER_STATUS, R.layout.item_order_status); 然后在convert(BaseViewHolder helper, Bean item)里面,写 switch (helper.getItemViewType()) { case ORDER_STATUS: do something... break; case ... } 但是这样就不能根据status这个值去写对应三种状态的viewholder了。

6

。。。,加QQ聊吧,QQ:823212676

4

能上效果图吗?

1

通过你第一的描述我觉得可以把a1,a2,a3不要看做a的一部分,看做b,c同级的情况。

6

这样就是5种不同的布局,a1,a2,a3,b,c。这样应该就好处理了

6

实体类返回的type你可以处理一下应该是a. type*.statusEnum来返回type,而不是直接a.type。

3

@magic0908 这样是不是就可以处理了?

9

@CymChad 按照你说的,确实可以实现了,非常感谢。

3

@FrankKwok 已经解决了。