I have a ListView in which each row has one `TextView`, one `EditText` view and two buttons. The two buttons are for increasing and decreasing a value of the `EditText`. These buttons are working fine but when I edit the value of the `EditText` of the first row, it changes the value of all rows' `EditTexts`, and then when I hit the button it increase all rows' value. Here is my listener that is creating an issue 

```
viewHolder.supplyQuantity.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,  int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            if(viewHolder.supplyQuantity.getText().toString()!="") {
                childVaccinationArrayList.get(position).setQuantity(Integer.parseInt(viewHolder.supplyQuantity.getText().toString()));
                notifyDataSetChanged();
                Log.d("list", textMap.toString());
            }

        }
    });

```

Adapter code

```
public class LHWSupplyListAdapter extends ArrayAdapter<SpinnerData> {

List<SpinnerData> childVaccinationArrayList;
Context context;

public LHWSupplyListAdapter(List<SpinnerData> arrayList, Context context) {
    super(context, R.layout.item_supplies_to_given_to_lhw, arrayList);
    this.childVaccinationArrayList = arrayList;
    this.context = context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    SpinnerData suppliesModel = getItem(position);
    final LHWSupplyListAdapter.ViewHolder viewHolder;
    if (convertView == null) {
        viewHolder = new LHWSupplyListAdapter.ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.item_supplies_to_given_to_lhw, parent, false);
        viewHolder.supplyName = convertView.findViewById(R.id.SupplyName);
        viewHolder.supplyQuantity = convertView.findViewById(R.id.Quantity);
        viewHolder.btnAdd = convertView.findViewById(R.id.AddQuantity);
        viewHolder.btnRemove = convertView.findViewById(R.id.RemoveQuantity);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (LHWSupplyListAdapter.ViewHolder) convertView.getTag();
    }
    viewHolder.supplyName.setText(childVaccinationArrayList.get(position).getItem());
    viewHolder.supplyQuantity.setText(String.valueOf(childVaccinationArrayList.get(position).getQuantity()));
    viewHolder.btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            childVaccinationArrayList.get(position).setQuantity(Integer.parseInt(viewHolder.supplyQuantity.getText().toString())+1);
            notifyDataSetChanged();
        }
    });

    viewHolder.btnRemove.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (childVaccinationArrayList.get(position).getQuantity() > 0 && Integer.parseInt(viewHolder.supplyQuantity.getText().toString()) > 0) {
                childVaccinationArrayList.get(position).setQuantity(Integer.parseInt(viewHolder.supplyQuantity.getText().toString()) - 1);
                notifyDataSetChanged();
            }
        }
    });
    viewHolder.supplyQuantity.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            if(viewHolder.supplyQuantity.getText().toString()!="") {
                childVaccinationArrayList.get(position).setQuantity(Integer.parseInt(viewHolder.supplyQuantity.getText().toString()));
                notifyDataSetChanged();
            }

        }
    });

    return convertView;
}

private static class ViewHolder {

    TextView supplyName;
     EditText supplyQuantity;
    ImageView btnAdd, btnRemove;
}

}

```