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

RecyclerView适配器中getItemCount()返回null致应用崩溃求助

解决RecyclerView适配器getItemCount()导致的崩溃问题

嘿,我来帮你搞定这个崩溃问题!首先咱们得理清根源:错误提示“movies item size in getItemCount() returns null”本质是因为你在getItemCount()里直接调用了movieList.size(),但movieList可能为null,这时候调用size()会触发空指针异常,而RecyclerView要求这个方法必须返回合法的int值,不能出现null相关的异常情况。

看你的适配器代码,构造函数直接把传入的movieList赋值给成员变量,但如果外部调用适配器时传入null(比如API返回数据为空、解析出错导致列表为null),这个成员变量就会是null,进而引发崩溃。

给你几个靠谱的解决方案,建议组合使用来双重保险:

方案1:在构造函数中初始化空列表,杜绝null

修改适配器构造函数,确保成员变量movieList永远不会是null:

public MoviesAdapter(Context context, List<Movie> movieList) {
    this.context = context;
    // 若传入列表为null,则初始化空ArrayList
    this.movieList = movieList != null ? movieList : new ArrayList<>();
}

这样不管外部传什么,内部列表都有合法实例,调用size()就不会崩溃了。

方案2:在getItemCount()中做null判断

直接在getItemCount()方法里处理null情况,返回0当列表为null时:

@Override
public int getItemCount() {
    // 列表不为null返回实际大小,否则返回0
    return movieList != null ? movieList.size() : 0;
}

这个方法能直接规避空指针,RecyclerView拿到0就知道没有数据要展示,不会崩溃。

方案3:从源头确保传入的列表不为null

在调用适配器的地方提前处理API返回的数据:

// 假设这是你从API获取的电影列表
List<Movie> movies = apiResponse.getMovies();
// 若API返回null,替换为空列表
if (movies == null) {
    movies = new ArrayList<>();
}
// 再创建适配器
MoviesAdapter adapter = new MoviesAdapter(context, movies);

从源头避免传入null,也是很有效的防护手段。

建议至少同时使用方案1和方案2,这样不管是外部传入null,还是后续操作中不小心把列表置为null,都能保证getItemCount()正常返回int值,彻底避免崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:12