java - Android Studio 尝试在空对象引用上调用虚拟方法“int java.util.ArrayList.size()”
问题描述
我真的不完全理解错误来自哪里。有人能帮助我吗?谢谢!
我发布了 LogCat 和下面的代码!
==================================================== ==================================================== ==================================================== ===========================================
日志猫
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
at com.musicapp.android.musicapp.MusicCustomAdapter.getItemCount(MusicCustomAdapter.java:42)
代码:
public class MusicCustomAdapter extends RecyclerView.Adapter<MusicCustomAdapter.ViewHolder>{
private ArrayList<Audio_Model> arrayListAudio;
private Context context;
public MusicCustomAdapter(ArrayList<Audio_Model> arrayListAudio, Context context) {
this.arrayListAudio = arrayListAudio;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.song_display_model,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.Name_of_Song.setText(arrayListAudio.get(position).getName());
holder.Name_of_Artist.setText(arrayListAudio.get(position).getArtist());
holder.imageView_song_display_model.setImageBitmap(arrayListAudio.get(position).getSongCOmerPhoto());
}
40 @Override
41 public int getItemCount() {
42 return arrayListAudio.size();
43 }
public class ViewHolder extends RecyclerView.ViewHolder{
LinearLayout relativeLayout;
TextView Name_of_Song;
TextView Name_of_Artist;
ImageView imageView_song_display_model;
public ViewHolder(@NonNull View itemView) {
super(itemView);
relativeLayout= itemView.findViewById(R.id.relativeLayoutId);
Name_of_Song = itemView.findViewById(R.id.Name_of_Song);
Name_of_Artist = itemView.findViewById(R.id.Name_of_Artist);
imageView_song_display_model = itemView.findViewById(R.id.imageView_song_display_model);
}
}
}
解决方案
问题是getItemCount()
可以在向适配器提供项目之前调用它,因此如果项目列表为空,则需要确保它返回 0。
替换此代码
@Override
public int getItemCount() {
return arrayListAudio.size();
}
和
@Override
public int getItemCount() {
return arrayListAudio == null ? 0 : arrayListAudio.size();
}
推荐阅读
- javascript - “必需”验证在 javascript 中不起作用
- twilio - 如何计算 TaskRouter 工作区中的任务数?
- php - 检查输入的 PHP 代码是否返回值
- python - 使用熊猫执行一种热编码时获取“SettingWithCopyWarning”
- excel - VBA:为什么我不能使用“=”将数据从一张纸传输到另一张纸?
- python - self.next = None 如何将下一个值的地址存储在链表中?
- python - 让 nan 进入张量流
- php - 未定义的索引:retail_price 显示我无法将retail_price 传递到 loading_add.php 页面
- python-3.x - Selenium Python 不关闭子窗口
- timeout - Amazon EC2 实例(Windows 服务器)获得定时