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

Android自定义列表应用因RecyclerView崩溃,请求排查问题

Android自定义列表应用崩溃排查与修复

核心崩溃原因:空指针异常(NullPointerException)

在MainActivity中,你仅声明了ArrayList<row_data> arrContacts;,但未初始化该集合,直接调用arrContacts.add()时会触发空指针,导致应用崩溃。

修复步骤

1. 初始化ArrayList

在onCreate方法中,调用add()前先初始化集合:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = findViewById(R.id.recyclerContact);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    
    // 新增初始化代码
    arrContacts = new ArrayList<>();
    
    arrContacts.add(new row_data("Christopher","9876513450",R.drawable.peter));
    // 后续add代码保持不变...
    RecyclerAdapter contactAdapter = new RecyclerAdapter(this, arrContacts);
    recyclerView.setAdapter(contactAdapter);
}

注:创建适配器时建议直接传this(Activity上下文)而非getApplicationContext(),避免不必要的上下文生命周期问题。

2. 其他潜在问题检查

  • 图片资源存在性:确保R.drawable.peter、R.drawable.avatar2等所有引用的图片都存在于res/drawable目录,不存在会触发Resources.NotFoundException。
  • RecyclerView布局高度优化:当前布局中RecyclerView的android:layout_height="wrap_content",若列表项较多,建议改为match_parent避免滚动异常:
<androidx.recyclerview.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recyclerContact" />
  • row_data类封装优化:当前类字段为默认包访问权限,建议添加getter方法遵循封装原则:
public class row_data {
    private String name, number;
    private int image;
    
    public row_data(String name, String number, int image) {
        this.image = image;
        this.name = name;
        this.number = number;
    }
    
    public String getName() { return name; }
    public String getNumber() { return number; }
    public int getImage() { return image; }
}

同时修改适配器对应调用逻辑:

@Override
public void onBindViewHolder(@NonNull Viewholder holder, int position) {
    row_data data = arrContacts.get(position);
    holder.img.setImageResource(data.getImage());
    holder.txtnumber.setText(data.getNumber());
    holder.txtname.setText(data.getName());
}

验证修复

完成上述修改后重新编译运行,空指针崩溃会被解决,列表可正常加载显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:01:29