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

Android自定义BaseAdapter适配ListView时getCount方法空指针异常

问题根因

错误出在MainActivity的fillList方法第一行代码:

userList = new ArrayList<UserModel>(userList);

你在类中仅声明了List<UserModel> userList;成员变量,没有做初始化,它的默认值为null。当你把null作为参数传入ArrayList的构造方法时,会直接触发空指针,导致后续传入适配器的数据集本身就是null,适配器getCount方法调用uList.size()时就抛出了对应的空指针异常。

修复方案

  1. 修改fillList方法中的列表初始化逻辑,直接创建空的ArrayList即可,不需要传入未初始化的userList:
// 把原来的userList = new ArrayList<UserModel>(userList);替换为下面的代码
userList = new ArrayList<>();
  1. 可以给适配器增加空判断兜底,避免后续误传null数据集时崩溃:
    修改UserListAdapter的getCount方法:
@Override
public int getCount() {
    return uList == null ? 0 : uList.size();
}

同时getItem方法也可以同步加空判断:

@Override
public Object getItem(int position) {
    return uList == null ? null : uList.get(position);
}

可选优化

当前适配器的getView方法每次都会重新inflate布局,没有复用convertView,列表滑动时会有性能损耗,可以改成复用逻辑提升流畅度:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = LayoutInflater.from(context).inflate(R.layout.layout, parent, false);
        holder = new ViewHolder();
        holder.name = convertView.findViewById(R.id.namexml);
        holder.surname = convertView.findViewById(R.id.surnamexml);
        holder.age = convertView.findViewById(R.id.agexml);
        holder.team = convertView.findViewById(R.id.teamxml);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    UserModel user = uList.get(position);
    holder.name.setText(user.getName());
    holder.surname.setText(user.getSurname());
    holder.age.setText(user.getAge());
    holder.team.setText(user.getTeam());
    return convertView;
}

// 新增ViewHolder内部类
static class ViewHolder {
    TextView name;
    TextView surname;
    TextView age;
    TextView team;
}

内容的提问来源于stack exchange,提问作者Fatih Boyalı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:03