Ошибка 'void android.widget.TextView.setText (java.lang.CharSequence)' в нулевой ссылке на объект - PullRequest
0 голосов
/ 11 октября 2018

У меня были эти ошибки

java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.widget.TextView.setText (java.lang.CharSequence)' для ссылки на нулевой объект

в этом - holder.Plan.setText (model.getTypeOfPlan ());

, и этот -papapter -public класса расширяет 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 голосов
/ 12 октября 2018

Я дам вам обобщенный ответ, поскольку с этим вы столкнетесь несколько раз при разработке кода Android / Java.(java.lang.NullPointerException).

Вот как вы ее решаете;

  1. Убедитесь, что вы проверяете все элементы Nullable на правильную инициализацию.Например, в вашем случае вместо второго предположения, какой объект является нулевым, включите операторы 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 или проверок.

Надеюсь, это поможет, сейчас и в будущем ...:)

0 голосов
/ 12 октября 2018

Я подозреваю, что model.getTypeOfPlan() возвращает null, в этом случае вам нужно предоставить больше кодов, чтобы показать, откуда оно.

...