title: Error setting text to EditText inside RecyclerView's onBindViewHolder method
body: <p>I'm trying to set a text to an <code>EditText</code> inside my custom adapter and I'm getting this stack: </p>
  
  <pre><code>java.lang.NullPointerException: Attempt to read from field 'android.support.v7.widget.ViewInfoStore android.support.v7.widget.RecyclerView.mViewInfoStore' on a null object reference
      at android.support.v7.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:8194)
      at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8180)
      at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8168)
      at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1573)
      at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
      at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
      at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
      at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3225)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
      at android.view.View.measure(View.java:17547)
      at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1260)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
      at android.widget.ScrollView.onMeasure(ScrollView.java:337)
      at android.view.View.measure(View.java:17547)
      at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1676)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615)
      at android.view.View.measure(View.java:17547)
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015)
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173)
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379)
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
      at android.view.Choreographer.doCallbacks(Choreographer.java:580)
      at android.view.Choreographer.doFrame(Choreographer.java:550)
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
      at android.os.Handler.handleCallback(Handler.java:739)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:135)
      at android.app.ActivityThread.main(ActivityThread.java:5254)
      at java.lang.reflect.Method.invoke(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:372)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
  
  
  at com.andro
  02-21 14:14:29.702 1707-1707/com.android.inputmethod.latin E/RichInputConnection: Unable to connect to the editor to retrieve text.
  02-21 14:14:31.705 1707-1707/com.android.inputmethod.latin E/RichInputConnection: Unable to connect to the editor to retrieve text.
  02-21 14:14:33.706 1707-1707/com.android.inputmethod.latin E/RichInputConnection: Unable to connect to the editor to retrieve text.
  02-21 14:14:35.709 1707-1707/com.android.inputmethod.latin E/RichInputConnection: Unable to connect to the editor to retrieve text.
  </code></pre>
  
  <p>I'm not sure what is wrong, I am setting text to a <code>TextView</code> exactly the same way and it works fine. I've looked over forums and articles and I've seen people with similar issues but It seems they are either not binding the view with I's <code>ViewHolder</code> property correctly or trying to access the </p>
  
  <p>Here It is my custom Adapter class:</p>
  
  <pre><code>public class ProductListAdapter extends RecyclerView.Adapter&lt;ProductListViewHolder&gt;{
      private List&lt;Product&gt; productList;
      private ProductItemManager productItemManager;
  
      public ProductListAdapter(List&lt;Product&gt; productList, ProductItemManager productItemManager) {
          this.productList = productList;
          this.productItemManager = productItemManager;
      }
  
      @NonNull
      @Override
      public ProductListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
          View productListView = LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.adapter_product_list, parent, false);
          return new ProductListViewHolder(productListView, productItemManager);
      }
  
      @Override
      public void onBindViewHolder(@NonNull ProductListViewHolder productListViewHolder, final int position) {
          Product product = productList.get(position);
  
          Double finalPrice = product.getSellingPrice() * product.getQuantity();
  
          productListViewHolder.productDescription.setText(product.getDescription());
          productListViewHolder.productSellingPrice.setText("un. " + Utils.doubleToReal(product.getSellingPrice()));
          productListViewHolder.productFinalPrice.setText(Utils.doubleToReal(finalPrice));
          productListViewHolder.productQuantity.setText(Double.toString(product.getQuantity()));
      }
  
      @Override
      public int getItemCount() {
          return productList.size();
      }
  }
  </code></pre>
  
  <p>And here It is my ViewHolder</p>
  
  <pre><code>public class ProductListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
      public TextView productDescription, productSellingPrice, productFinalPrice;
      public ImageView removeProductIcon;
      public EditText productQuantity;
      private ProductItemManager productItemManager;
  
      public ProductListViewHolder(View itemView, ProductItemManager productItemManager) {
          super(itemView);
  
          productDescription = itemView.findViewById(R.id.productDescription);
          productSellingPrice = itemView.findViewById(R.id.productSellingPrice);
          productFinalPrice = itemView.findViewById(R.id.productFinalPrice);
          removeProductIcon = itemView.findViewById(R.id.removeProductIcon);
          productQuantity = itemView.findViewById(R.id.productQuantity);
  
          this.productItemManager = productItemManager;
  
          removeProductIcon.setOnClickListener(this);
  
          this.productChangeListener();
      }
  
      private void productChangeListener() {
          productQuantity.addTextChangedListener(new TextWatcher() {
              @Override
              public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  
              }
  
              @Override
              public void onTextChanged(CharSequence s, int start, int before, int count) {
                  Double quantity = Double.parseDouble(productQuantity.getText().toString());
                  productItemManager.setProductQuantity(getAdapterPosition(), quantity);
              }
  
              @Override
              public void afterTextChanged(Editable s) {
  
              }
          });
      }
  
      @Override
      public void onClick(View v) {
          productItemManager.removeProduct(getAdapterPosition());
      }
  }
  </code></pre>