[CymChad/BaseRecyclerViewAdapterHelper]使用自定义viewholder继承BaseViewHolder报错。

2024-08-08 516 views
9

1、brvah自带demo代码 2、修改AnimationAdapter,使用butterknife生成viewholder AnimationAdapter extends BaseQuickAdapter<Status, AnimationAdapter.ViewHolder> helper.img.setImageResource(R.mipmap.animation_img1); `static class ViewHolder extends BaseViewHolder { @BindView(R.id.img) ImageView img; @BindView(R.id.tweetName) TextView tweetName; @BindView(R.id.tweetText) TextView tweetText; @BindView(R.id.tweetDate) TextView tweetDate; @BindView(R.id.card_view) CardView cardView;

    ViewHolder(View view) {
        super(view);
        ButterKnife.bind(this, view);
    }
}`

3、运行报错 java.lang.ClassCastException: com.chad.library.adapter.base.BaseViewHolder cannot be cast to com.chad.baserecyclerviewadapterhelper.adapter.AnimationAdapter$ViewHolder at com.chad.baserecyclerviewadapterhelper.adapter.AnimationAdapter.convert(AnimationAdapter.java:31)

回答

6

哪个版本?

3

我也有遇到类似的java.lang.IllegalAccessException: java.lang.Class<com.app.baseonandroidonlinemall.adapter.HotRecyclerViewAdapter$ViewHolder> is not accessible from java.lang.Class 在5.0的系统上跑没问题,换到7.0上面跑,就报错崩溃。版本号compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.15'

2

@hblolj 你的HotRecyclerViewAdapter$ViewHolder的访问权限对吗

2

你的ViewHolder单独建一个外部类继承BaseViewHolder试试?

5

compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.19'

3

@FrankKwok 我ViewHolder里面就是很简单的TextView之类的,使用中没有涉及到权限问题。后来我切换成BaseViewHolder就OK了。但是我发现我其他几个Adapter里面也有使用继承BaseViewHolde的自定义ViewHolder,也没有报错。

9

@CymChad 我晚上回去试一下,然后给你反馈。

9

@CymChad @FrankKwok 感谢两位大牛,2.9.19版本,解决了之前提到的问题,谢谢!

5

@hblolj 有两种可能,一个是访问权限的问题,这个在新版本修复了,另一个可能就是你的自定义ViewHolder除了View之外还有其它参数

0

@FrankKwok 嗯,之前有想过会不会是自定义ViewHolder里面的参数的权限是Private,后来发现其他的也没问题。就不知道了,总之十分感谢。

2

@CymChad 虽然问题已经解决了,但是白天说好的晚上测一下,刚才还是试了一下,外部类继承BaseViewHolder没问题。但是属性需要设置为public,之前应该是默认protected导致的权限问题吧。十分感谢你的开源工具,打扰了。