protected BaseViewHolder createBaseViewHolder(View view){ //TODO }
请问如何根据类型返回不一样的viewholder。
protected BaseViewHolder createBaseViewHolder(View view){ //TODO }
请问如何根据类型返回不一样的viewholder。
不需要创建多个ViewHolder,可以看官方的demo是如何实现的
@FrankKwok 问题是我现在需要结合其他实现,需要多个viewholder进行处理。大概分为2种holder,普通的直接使用baseviewholder都行,但是另外一个需要继承其他接口实现功能。
比如说有些控件需要New出来的这些个应该是需要ViewHolder的吧
@woyoudianhuai 就是这些情况嘛。所以现在是那包装好了,通用一个baseviewholder,想自定义发现有缺陷。
@Anayuta 都使用需要继承其他接口实现功能的ViewHolder
@FrankKwok 比如?贴个小片段吧
@Anayuta 比如你想让其中一个实现这个接口interface Something { void doSomething();},先创建一个一个抽象类SomethingHolder,然后创建两个子类SomethingHolder1,SomethingHolder2,对doSomething做不同的处理,最后让创建一个Adapter像这种MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, SomethingHolder>应该就可以了.
@FrankKwok OK,我一会试试。那就不能用到instanceof了吧
根据getItemViewType()做不同的处理
@Anayuta 我也写个demo试试
@FrankKwok 昨天试了getItemViewType,里面的position比我的数据多1.get数据的时候数组异常了。
@FrankKwok 好啊,可以的话一会共享参考。
@Anayuta 我的方法是错的
@FrankKwok 唉,怪难玩的,昨天使用的时候发现出了这样。
@Anayuta 换了个思路,你可以看下demo,我感觉我之前可能误导你了
@FrankKwok 好。[握手]
我有一点不解,ViewHolder实现接口有什么用呢?
@FrankKwok 用了下videolist实现现在的功能,发现viewholder的问题。我之前用了draf的那个方法,抛了个异常给我。然后看了issues里说用这个方法createBaseViewHolder。[笑哭]
@Anayuta 那现在问题解决了吗
@FrankKwok 看了你覆盖的那个方法,要是可以用,肯定是解决的。[谢谢]
可以吗?我先前运行了 CymChad 的代码关于自定义ViewHoler的代码,依然抱错 java.lang.ClassCastException: com.chad.library.adapter.base.BaseViewHolder cannot be cast to com.chad.myapplication.InFullFlowerAdapter$MyViewholder1
@Anayuta
@woyoudianhuai 我现在还没弄,晚点吧。现在在忙着其他。关于你那个报错,定义为public应该是没有问题的。
谢谢了,我换成Public OK了