0

J'ai appelé recyclerview dans lequel mon arraylist est attaché avec l'adaptateur. Et quand l'adaptateur a son propre fichier de ligne dans lequel j'ai pris un texte d'édition et manuellement, je peux entrer le montant.La valeur Edittext disparaît lors du défilement de recyclerview dans Android

Mais le problème est que lorsque je fais défiler le recyclerview, la valeur du texte d'édition a disparu. Donc, ne peut pas voir les valeurs que je saisis.

classe Adaptateur

public class AddSecondarySalesOrderProductDetailsAdapter extends RecyclerView.Adapter { 

    ArrayList<SecondarySalesProductDetailsModel> mArrSecondarySalesProductDetailsModel; 
    ArrayList<String> mArrProductQuantity; 
    private int mViewItem = 1; 
    private Activity mActivity; 
    private LayoutInflater mLayoutInflater; 
    ImageView mImageDeleteProduct; 
    private String mProductName, mProductAvaQuantity, mProductSKU, mOrderedQuantity; 

    /** 
    * Adapter contains the data to be displayed 
    */ 
    public AddSecondarySalesOrderProductDetailsAdapter(Activity mActivity, ArrayList<SecondarySalesProductDetailsModel> 
      mArrSecondarySalesProductDetailsModel) { 
     this.mActivity = mActivity; 
     this.mArrSecondarySalesProductDetailsModel = mArrSecondarySalesProductDetailsModel; 
     mArrProductQuantity = new ArrayList<>(); 
     mLayoutInflater = LayoutInflater.from(mActivity); 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = mLayoutInflater.inflate(R.layout.raw_add_secondary_sales_order_product_details, parent, 
       false); 
     return new CustomViewHolder(view); 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return mArrSecondarySalesProductDetailsModel.get(position) != null ? mViewItem : 0; 
    } 

    @Override 
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { 
     holder.setIsRecyclable(false); 
     final SecondarySalesProductDetailsModel mAllProductDetailsModel = mArrSecondarySalesProductDetailsModel.get(position); 
     ((CustomViewHolder) holder).mImageDeleteProduct.setTag(position); 

     mProductName = mAllProductDetailsModel.getProductName(); 
     mProductAvaQuantity = String.valueOf(mAllProductDetailsModel.getAvalQty()); 
     mProductSKU = mAllProductDetailsModel.getSku(); 

     ((CustomViewHolder) holder).mTextProductName.setText(mProductName); 
     ((CustomViewHolder) holder).mTextProductAvaQuantity.setText(mProductAvaQuantity); 
     ((CustomViewHolder) holder).mTextProductSKU.setText(mProductSKU); 

     ((CustomViewHolder) holder).mImageDeleteProduct.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mArrSecondarySalesProductDetailsModel.remove(position); 
       notifyItemRemoved(position); 
       notifyItemRangeChanged(position, mArrSecondarySalesProductDetailsModel.size()); 

       if (mArrSecondarySalesProductDetailsModel.size() == 0) { 
        AddSecondarySalesOrderProductDetailFragment.mRelativeNoRecords.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 
     OrderedQuantityTextWatcher textWatcher = new OrderedQuantityTextWatcher(holder, ((CustomViewHolder) holder).mEditOrderedQuantity, position); 
     ((CustomViewHolder) holder).mEditOrderedQuantity.addTextChangedListener(textWatcher); 
     ((CustomViewHolder) holder).mEditOrderedQuantity.setTag(position); 
    } 

    private class OrderedQuantityTextWatcher implements TextWatcher { 
     private EditText editText; 
     private int position; 
     private RecyclerView.ViewHolder holder; 

     public OrderedQuantityTextWatcher(RecyclerView.ViewHolder holder, EditText editText, int 
       pos) { 
      this.holder = holder; 
      this.editText = editText; 
      this.position = pos; 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
//   mOrderedQuantity = mEditOrderedQuantity.getText().toString().trim(); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
//   int position = holder.getAdapterPosition(); 
      int position = (int) editText.getTag(); 

      Common.insertLog("Position: " + position); 
      Common.insertLog("Value: " + editable); 

      SecondarySalesProductDetailsModel secondarySalesProductDetailsModel = new 
        SecondarySalesProductDetailsModel(); 
      secondarySalesProductDetailsModel.setId(mArrSecondarySalesProductDetailsModel.get(position).getId()); 
      secondarySalesProductDetailsModel.setProductName 
        (mArrSecondarySalesProductDetailsModel.get(position).getProductName()); 
      secondarySalesProductDetailsModel.setAvalQty(mArrSecondarySalesProductDetailsModel 
        .get(position).getAvalQty()); 
      secondarySalesProductDetailsModel.setOrderedQty(editable.toString().trim()); 
      secondarySalesProductDetailsModel.setSku(mArrSecondarySalesProductDetailsModel.get 
        (position).getSku()); 
      secondarySalesProductDetailsModel.setProductId(mArrSecondarySalesProductDetailsModel 
        .get(position).getProductId()); 
      secondarySalesProductDetailsModel.setSelected(mArrSecondarySalesProductDetailsModel 
        .get(position).getSelected()); 
//   mArrSecondarySalesProductDetailsModel.add(secondarySalesProductDetailsModel); 

      Intent intent = new Intent(AppConstants.BROADCAST_SEND_SECONDARY_PRODUCTS); 
      intent.putExtra(AppConstants.BUNDLE_BROADCAST_ORDERED_QUANTITY, 
        secondarySalesProductDetailsModel); 
      LocalBroadcastManager.getInstance(mActivity).sendBroadcast(intent); 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return mArrSecondarySalesProductDetailsModel.size(); 
    } 

    /** 
    * Initialization of components 
    */ 
    public class CustomViewHolder extends RecyclerView.ViewHolder { 

     TextView mTextProductName, mTextProductAvaQuantity, mTextProductSKU; 
     EditText mEditOrderedQuantity; 
     ImageView mImageDeleteProduct; 

     public CustomViewHolder(final View itemView) { 
      super(itemView); 
      this.mImageDeleteProduct = (ImageView) itemView.findViewById(R.id 
        .image_raw_secondary_sales_order_delete); 
      this.mTextProductName = (TextView) itemView.findViewById(R.id.text_raw_secondary_sales_order_product_name); 
      this.mTextProductAvaQuantity = (TextView) itemView.findViewById(R.id 
        .text_raw_secondary_sales_order_ava_quantity); 
      this.mTextProductSKU = (TextView) itemView.findViewById(R.id 
        .text_raw_secondary_sales_order_product_sku); 
      this.mEditOrderedQuantity = (EditText) itemView.findViewById(R.id 
        .edit_raw_secondary_sales_order_quantity); 
     } 
    } 

Répondre

0

i classe modèle créer un champ plus et défini comme vide sur la création d'objets, définissez pour modifier le texte dans onBindViewHolder(), sur la mise à jour du changement de texte objet trop ..

0

problème: si votre valeur est edittext 0 sur le Scrolling recyclerview

Solution: Utilisez ensuite le code ci-dessous à votre intérieur EditText tex méthode twatcher afterTextchange()

Code : yourEditTextName.setSelection(yourEditTextName.getText().length());