空对象引用上的错误'void android.widget.TextView.setText(java.lang.CharSequence)'

时间:2018-10-11 20:52:38

标签: java android android-studio nullpointerexception textview

我遇到了这个错误

  

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;

    }

}

2 个答案:

答案 0 :(得分:0)

我怀疑model.getTypeOfPlan()返回了null,在这种情况下,您需要提供更多代码以显示其来源。

答案 1 :(得分:0)

我将给您一个概括性的答案,因为这是您在开发Android / Java代码时会多次遇到的问题。 (java.lang.NullPointerException)。

这是解决问题的方式;

  1. 确保检查所有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语句或检查。

希望这对现在和将来都有帮助...:)