繁体   English   中英

Android Studio Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

[英]Android Studio Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

我真的不完全理解错误来自哪里。 有人能帮助我吗? 谢谢!

我发布了 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() ,因此如果项目列表是 null,则需要确保它返回 0。

替换此代码

@Override
public int getItemCount() {
    return arrayListAudio.size();
}

@Override
public int getItemCount() {
    return arrayListAudio == null ? 0 : arrayListAudio.size();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM