[CymChad/BaseRecyclerViewAdapterHelper]继承BaseMultiItemQuickAdapter,使用多个viewholder的问题

2024-08-08 475 views
6

protected BaseViewHolder createBaseViewHolder(View view){ //TODO }

请问如何根据类型返回不一样的viewholder。

回答

0

不需要创建多个ViewHolder,可以看官方的demo是如何实现的

1

@FrankKwok 问题是我现在需要结合其他实现,需要多个viewholder进行处理。大概分为2种holder,普通的直接使用baseviewholder都行,但是另外一个需要继承其他接口实现功能。

6

比如说有些控件需要New出来的这些个应该是需要ViewHolder的吧

1

@woyoudianhuai 就是这些情况嘛。所以现在是那包装好了,通用一个baseviewholder,想自定义发现有缺陷。

7

@Anayuta 都使用需要继承其他接口实现功能的ViewHolder

4

@FrankKwok 比如?贴个小片段吧

1

@Anayuta 比如你想让其中一个实现这个接口interface Something { void doSomething();},先创建一个一个抽象类SomethingHolder,然后创建两个子类SomethingHolder1,SomethingHolder2,对doSomething做不同的处理,最后让创建一个Adapter像这种MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, SomethingHolder>应该就可以了.

1

@FrankKwok OK,我一会试试。那就不能用到instanceof了吧

3

根据getItemViewType()做不同的处理

4

@Anayuta 我也写个demo试试

0

@FrankKwok 昨天试了getItemViewType,里面的position比我的数据多1.get数据的时候数组异常了。

7

@FrankKwok 好啊,可以的话一会共享参考。

0

@Anayuta 我的方法是错的

6

@FrankKwok 唉,怪难玩的,昨天使用的时候发现出了这样。

4

@Anayuta 换了个思路,你可以看下demo,我感觉我之前可能误导你了

1

@FrankKwok 好。[握手]

9

我有一点不解,ViewHolder实现接口有什么用呢?

0

@FrankKwok 用了下videolist实现现在的功能,发现viewholder的问题。我之前用了draf的那个方法,抛了个异常给我。然后看了issues里说用这个方法createBaseViewHolder。[笑哭]

5

@Anayuta 那现在问题解决了吗

2

@FrankKwok 看了你覆盖的那个方法,要是可以用,肯定是解决的。[谢谢]

1

可以吗?我先前运行了 CymChad 的代码关于自定义ViewHoler的代码,依然抱错 java.lang.ClassCastException: com.chad.library.adapter.base.BaseViewHolder cannot be cast to com.chad.myapplication.InFullFlowerAdapter$MyViewholder1

4

@Anayuta

5

@woyoudianhuai 我现在还没弄,晚点吧。现在在忙着其他。关于你那个报错,定义为public应该是没有问题的。

2

谢谢了,我换成Public OK了