You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FirestoreRecyclerAdapter调用RecyclerView.setAdapter出现类型不匹配错误如何解决

问题根源

这是Android旧Support库和AndroidX库不兼容导致的类型不匹配错误:你项目中使用的RecyclerView是AndroidX包下的androidx.recyclerview.widget.RecyclerView,但相关的ViewHolder、注解依赖的还是旧的android.support包,两者的类型不互通,所以setAdapter时会报类型不匹配的错误。

解决方案

  • 第一步:替换ViewHolder的父类为AndroidX版本
    将你的NoteViewHolder定义修改为:
public class NoteViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder{
    // 内部原有代码保持不变
    private TextView title;
    private TextView content;
    LinearLayout layout;

    public NoteViewHolder(@NonNull View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.note_title);
        content = itemView.findViewById(R.id.note_description);
        layout = itemView.findViewById(R.id.Note);
    }
}
  • 第二步:清理冗余注解修正代码错误
    你代码中所有的@android.support.annotation.NonNull都可以删除,只保留AndroidX的@NonNull即可,避免混淆。同时修正onBindViewHolder中的参数调用错误:
@Override
protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull firebaseModel model) {
    // 不要用类名firebaseModel调用方法,要用传入的参数model
    holder.title.setText(model.getTitle());
    holder.content.setText(model.getContent());
}
  • 第三步:检查依赖配置
  1. 先确认gradle.properties中已经开启AndroidX支持:
android.useAndroidX=true
android.enableJetifier=true
  1. 再确认Module级build.gradle中使用的firebase-ui-firestore依赖版本为6.0.0及以上(适配AndroidX的版本),例如:
implementation 'com.firebaseui:firebase-ui-firestore:8.0.2'
  • 第四步:补充Adapter生命周期监听
    在Activity的onStart和onStop方法中添加Adapter的监听启停代码,否则列表不会加载数据:
@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

内容的提问来源于stack exchange,提问作者Dharmik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:18:00