0

我已經調用了recyclerview,其中我的arraylist與適配器連接。當適配器有自己的行文件,我已經採取了一個編輯文本和手動我可以輸入金額。在Android中滾動recyclerview時Edittext值消失

但問題是,當我滾動recyclerview,編輯文本值已經消失。所以看不到我輸入的值。

適配器類別

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

回答

0

我的模型類創建一個多個領域,並設置爲空的對象的創建,設置onBindViewHolder(編輯文本),在該對象過於文本變化更新..

0

問題:如果你的EditText值爲0的滾動recyclerview

解決方案:然後用下面的代碼到你的EDITTEXT內TEX twatcher方法afterTextchange()

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