Android Firebase开发setAdapter不兼容FirestoreRecyclerAdapter报错如何解决
问题根源
报错是AndroidX和旧版Support库的RecyclerView类不兼容导致的:
- 项目中使用的
RecyclerView是androidx.recyclerview.widget.RecyclerView,对应的ViewHolder必须继承AndroidX版本的实现 - 自定义的
NoteViewHolder继承的是废弃的旧Support库类android.support.v7.widget.RecyclerView.ViewHolder - 两类不通用导致
FirestoreRecyclerAdapter的泛型参数不符合setAdapter的入参要求,触发类型不匹配错误。
解决步骤
- 第一步:修改
NoteViewHolder的父类,替换为AndroidX版本的ViewHolder
将原来的内部类代码:
修改为:public class NoteViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder
你代码顶部已经导入了public class NoteViewHolder extends ViewHolderandroidx.recyclerview.widget.RecyclerView.ViewHolder,直接简写即可,也可以写完整路径androidx.recyclerview.widget.RecyclerView.ViewHolder。 - 第二步:重新构建项目,报错即可消失,原有业务逻辑不需要做其他修改。
可选优化(非必填,解决列表滚动时头像错乱问题)
当前你在onBindViewHolder中直接使用全局的mimageviewofuser加载头像,列表滚动时会出现头像显示错位的问题,建议调整:
- 将
mimageviewofuser移到NoteViewHolder内部作为成员变量 - 绑定数据时从
noteViewHolder中取头像控件加载图片即可。
内容的提问来源于stack exchange,提问作者ABDELLATIF LAGHJAJ
相关产品推荐
相关产品推荐

