0

Ich habe Recyclerview aufgerufen, in dem meine Arraylist mit dem Adapter verbunden ist. Und wenn der Adapter eine eigene Zeilendatei hat, in der ich einen Bearbeitungstext eingegeben habe, kann ich manuell den Betrag eingeben.Edittext-Wert verschwinden beim Scrollen Recyclerview in Android

Aber das Problem ist, wenn ich scroll die Recyclerview, Text bearbeiten Wert gegangen ist. So können die Werte nicht angezeigt werden, je nachdem, was von mir eingegeben wurde.

Adapter Klasse

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); 
     } 
    } 

Antwort

0

i Modellklasse erstellen ein weiteres Feld und als leere auf Objekterstellung, Set bearbeiten Text in onBindViewHolder() auf Textänderung Update gesetzt, die zu Objekt ..

0

Problem: wenn Ihr EditText Wert 0 auf Blättern in der recyclerview ist

Lösung: dann unten-Code auf Ihre EditText innerhalb tex Verwenden twatcher Methode afterTextchange()

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