В recylerview edittext значения повторяются при получении через интерфейс - PullRequest
0 голосов
/ 03 февраля 2020

Recylerview

           @Override
   public void onBindViewHolder(@NonNull CustomListview.ViewHolder holder, int position) {

    holder.Sno.setText(""+(position+1));

    //remove colth unwanted characters
    String cloth = list.get(position).getCloth();
    String withoutFirstCharacter = cloth.substring(2,cloth.length()-1); // index starts at zero
    holder.Cloth.setText(""+withoutFirstCharacter);

    holder.qty.setText(list.get(position).getQuantity());
    holder.QtyId.setText(list.get(position).getQtyId());
    holder.Dis.setText(list.get(position).getDispatchedQty());

holder.deliverd - текст редактирования

       if (list.get(position).getValue()==null){
         holder.deliverd.setText("0");
         list.get(position).setValue("0");
    } else {
        holder.deliverd.setText(String.valueOf(list.get(position).getValue()));
    }

    holder.deliverd.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) {

            if (TextUtils.isEmpty(holder.deliverd.getText()))
            {
                list.get(position).setValue("0");
            } else {
                list.get(position).setValue(holder.deliverd.getText().toString());
            }

            int a = Integer.parseInt(list.get(position).getValue());

          //str is arraylist

            str.add(Integer.parseInt(list.get(position).getValue()));

            Log.i( "str",String.valueOf(str));

          //interface through pass the values to mainactivity
            dtInterface.onSetValues(str);

           // activity.array_val();
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
     });
     }

Интерфейс

         public interface DataTransferInterface  {
       public void onSetValues(ArrayList<Integer> in );
          }

Интерфейс MAinactivity реализует и переопределяет метод интерфейса

         @Override
   public void onSetValues(ArrayList<Integer> a )
   {

     HashMap<Integer, ArrayList<Integer>> hm=new HashMap<>();

      hm.put(100,a);

     //display hashmap element
     Set s = hm.entrySet();
     Iterator itr = s.iterator();
     while (itr.hasNext()){
        Map.Entry m = (Map.Entry)itr.next();
        System.out.println(m.getKey()+":values:"+m.getValue());
      Toast.makeText(this, "aaa"+m.getValue(),Toast.LENGTH_SHORT).show();

    }

   }

, когда я изменяю 1-й, 2-й, 3-й текст редактирования правильно получил значения один раз. Проблема заключается в том, что 4-й, 5-й и т. Д. c текст редактирования повторяют значения 2 раза и добавляются в массив. как это сделать.я пытался более 25 дней .. я приложил ошибку ниже.

    [![enter image description here][1]][1]

  [enter link description here][1]

https://andriodretrofit.000webhostapp.com/WhatsAppVideo2020-02-03at83032PM.gif

...