Значение EditText в Item в ListView изменяется после прокрутки при использовании BaseAdapter - PullRequest
0 голосов
/ 19 июня 2019

У меня проблемы с ListView с EditText в каждом элементе.

При загрузке Fragment, все начальные значения столбца суммы для оплатыаналогично столбцу тарифа.

На этом изображении я изменяю значение.

enter image description here

Но когда я прокручиваю вниз (это 10 пунктов) и снова прокручиваю вверх, я замечаю строку, которую я отредактировал, значение возвращается кначальное значение enter image description here

Я пытался проверить ответы

Изменение значения редактируемого текста в Listview при прокрутке и Класс базового адаптера ListViewреализовать TextWatcher

, но поведение остается прежним.

Это код моего getView()

 @Override
public View getView(final int position, View v, ViewGroup viewGroup) {


    decimalFormat = new DecimalFormat("###,##0.00");
    dbHelper = new DBHelper(c);
    sqldb = dbHelper.getWritableDatabase();
    dbManager = new DBManager(c);
    dbManager.open();

    getDeviceInfo();
    getTripDetails();

    final PaymentList2ViewHolder viewHolder;

    if (v == null) {
        v = LayoutInflater.from(c).inflate(R.layout.item_payment, viewGroup, false);
        viewHolder = new PaymentList2ViewHolder(v);
        v.setTag(viewHolder);
    } else {
        viewHolder = (PaymentList2ViewHolder) v.getTag();
    }

    if (getCount() == 0) {

        viewGroup.removeAllViewsInLayout();

    } else {
        Payment2Item s = (Payment2Item) getItem(position);

        viewHolder.tvId.setText(s.getSeatID());
        viewHolder.tvSeatNo.setText(s.getSeatNo());
        viewHolder.tvPassengerName.setText(s.getfName() + " " + s.getlName());
        viewHolder.tvPassengerType.setText(s.getPassengerType());
        viewHolder.tvPassengerID.setText(s.getPassengerID());
        viewHolder.tvFareAmount.setText(s.getFare());
        viewHolder.txtAmountToPay.setHint(s.getPayment());
        viewHolder.tvDiscountedAmount.setText(s.getDiscount());


        //getting the data in JSONObject form
        JSONObject dataObject = null;
        try {
            dataObject = objAllSched.getJSONObject("data");

            JSONArray schedArray = dataObject.getJSONArray("schedules");

            Log.e("schedArray", String.valueOf(schedArray));
            if (dataObject.length() != 0) {
                for (int i = 0; i < schedArray.length(); i++) {

                    JSONObject object = schedArray.getJSONObject(i);
                    String id = null;
                    id = object.getString("id");
                    Log.e("object ", String.valueOf(object));
                    if (id.toString().equalsIgnoreCase(scheduleId)) {

                        JSONArray faresArray = object.getJSONArray("fares");
                        Log.e("fare array", String.valueOf(faresArray));

                        for (int sab = 0; sab < faresArray.length(); sab++) {
                            JSONObject object2 = faresArray.getJSONObject(sab);
                            String name = null;
                            name = object2.getString("name");


                            if (s.getPassengerType().equalsIgnoreCase(name)) {
                                price = Double.parseDouble(object2.getString("price"));
                                s.setFare(String.valueOf(price));
                                viewHolder.tvFareAmount.setText(decimalFormat.format(price));
                                viewHolder.txtAmountToPay.setText(decimalFormat.format(price));
                                itemArrayPayment2List.get(position).setPayment(viewHolder.txtAmountToPay.getText().toString());

                                Log.e("getxt", viewHolder.txtAmountToPay.getText().toString());
                            }
                        }
                    }
                }
            }

            //adding TextWatcher
            viewHolder.txtAmountToPay.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void afterTextChanged(Editable editable) {
                    //updating the setter setPayment()
                    itemArrayPayment2List.get(position).setPayment(editable.toString());
                }
            });


        } catch (JSONException e) {
            e.printStackTrace();
        }


        viewHolder.txtAmountToPay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewHolder.txtAmountToPay.setText("");
            }
        });


        if (is_rebook == 1) {

            viewHolder.txtAmountToPay.setEnabled(false);
            viewHolder.txtAmountToPay.setClickable(false);
        }
    }

    return v;
}

Могу ли я узнать, в чем проблемаэтот?.Спасибо!

...