<分区>
我有一个从 Firebase 数据库获取数据的 RecyclerView。当 RecyclerView 到达数据提要的末尾时,应用程序崩溃并显示以下内容:
日志文件:
09-27 15:30:12.826 30184-30184/com.pctoolmanconsulting.trackmyweight E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.pctoolmanconsulting.trackmyweight, PID: 30184
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference
at com.pctoolmanconsulting.trackmyweight.ProgressViewHolder.bind(ProgressViewHolder.java:40)
at com.pctoolmanconsulting.trackmyweight.ProgressAdapter.onBindViewHolder(ProgressAdapter.java:41)
at com.pctoolmanconsulting.trackmyweight.ProgressAdapter.onBindViewHolder(ProgressAdapter.java:15)
我不知道应该在哪里检查空值。在我的 ViewHolder 类或适配器类的绑定(bind)方法中。
有人能帮我指明正确的方向吗?
谢谢。
我的ViewHolder绑定(bind)方法:
public void bind (ImageProgress progress){
name.setText(progress.name);
if(progress.progressDetail.startsWith("https://firebasestorage.googleapis.com/") || progress.progressDetail.startsWith("content://")){
progressDetailMessage.setVisibility(View.INVISIBLE);
image.setVisibility(View.VISIBLE);
Glide.with(activity).load(progress.progressDetail).fitCenter().into(image);
} else {
progressDetailMessage.setVisibility(View.VISIBLE);
image.setVisibility(View.GONE);
progressDetailMessage.setText(progress.progressDetail);
}
}
适配器类:
public class ProgressAdapter extends RecyclerView.Adapter<ProgressViewHolder> {
private static final String TAG ="ProgressAdapter";
private final Activity activity;
List<ImageProgress> progressDetails = new ArrayList<>();
public ProgressAdapter(Activity activity){
this.activity = activity;
}
public void addProgress(ImageProgress progress){
progressDetails.add(progress);
notifyItemInserted(progressDetails.size());
}
@Override
public ProgressViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
return new ProgressViewHolder(activity, activity.getLayoutInflater().inflate(android.R.layout.two_line_list_item,
parent, false));
}
@Override
public void onBindViewHolder(ProgressViewHolder holder, int position){
holder.bind(progressDetails.get(position));
}
@Override
public int getItemCount() {
return progressDetails.size();
}
}