我遇到了这个错误
java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'上的null 对象引用
在此-holder.Plan.setText(model.getTypeOfPlan());
这个-public类padapter扩展了FirestoreRecyclerAdapter {
我该如何解决,希望你们对此有所帮助
这是代码
public class padapter extends FirestoreRecyclerAdapter<addp, padapter.profileHolder> {
private OnItemClickListener listener;
public padapter(@NonNull FirestoreRecyclerOptions<addp> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull profileHolder holder, int position, @NonNull addp model) {
holder.textViewName.setText(model.getName());
holder.Plan.setText(model.getTypeOfPlan());
holder.Price.setText(model.getPrice());
}
@NonNull
@Override
public profileHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.profile_item, parent, false);
View Plan = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_cart, parent, false);
View Price = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_cart, parent, false);
return new profileHolder(v);
}
class profileHolder extends RecyclerView.ViewHolder {
TextView textViewName;
TextView Plan;
TextView Price;
public profileHolder(@NonNull View itemView) {
super(itemView);
textViewName = itemView.findViewById(R.id.Text_view_name);
Plan = itemView.findViewById(R.id.View_Plan_cart);
Price = itemView.findViewById(R.id.View_Plan_price);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION && listener != null){
listener.onItemClick(getSnapshots().getSnapshot(position),position);
}
}
});
}
}
public interface OnItemClickListener{
void onItemClick(DocumentSnapshot documentSnapshot, int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
}
答案 0 :(得分:0)
我怀疑model.getTypeOfPlan()
返回了null
,在这种情况下,您需要提供更多代码以显示其来源。
答案 1 :(得分:0)
我将给您一个概括性的答案,因为这是您在开发Android / Java代码时会多次遇到的问题。 (java.lang.NullPointerException)。
这是解决问题的方式;
确保检查所有Nullable项是否正确初始化。 例如,在您的情况下,无需第二次猜测哪个对象为null,而是使用if语句检查Null,就像这样,
if(holder != null ){
if(model != null){
holder.textViewName.setText(model.getName());
holder.Plan.setText(model.getTypeOfPlan());
holder.Price.setText(model.getPrice());
}else
Log.e(getClass().getSimpleName(),"model object is Null...");
}else
Log.e(getClass().getSimpleName(), "holder object is null...");
您可以在调试过程中使用它,一旦建立导致NullPointerException的对象,就可以继续对其进行正确的初始化,然后您就可以摆脱if语句或检查。
希望这对现在和将来都有帮助...:)