0

What I want to do is that when editing any EditText in the ListView, the values in all EditTexts change. For example, the user clicks on EditText2, enters the amount 100, the amount is multiplied by 10 and displayed immediately in all other EditTexts. I hope my idea is clear to you.

ListViewAdapter.class

public class ListViewAdapter extends BaseAdapter {
private final List\<ConverterModel\> converterData;
private final List\<LiveRatesModel\> liveRatesData;
private final LayoutInflater layoutInflater;
private boolean isFocusable = true;
private ConverterFragment converterFragment = new ConverterFragment();

    public ListViewAdapter(Context context, List<ConverterModel> ConverterData, List<LiveRatesModel> liveRatesData) {
        this.converterData = ConverterData;
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.liveRatesData = liveRatesData;
    }
    
    @Override
    public int getCount() {
        return converterData.size();
    }
    
    @Override
    public Object getItem(int position) {
        return converterData.get(position);
    }
    
    @Override
    public long getItemId(int position) {
        return converterData.get(position).getId();
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.converter_row, null, true);
            viewHolder = new ViewHolder();
            viewHolder.image = convertView.findViewById(R.id.konv_icon_kurs);
            viewHolder.currencyCode = convertView.findViewById(R.id.currency_code);
            viewHolder.currencyName = convertView.findViewById(R.id.name_currency);
            viewHolder.amountEntered = convertView.findViewById(R.id.editTxtAmountEntered);
            viewHolder.containerRow = convertView.findViewById(R.id.container_row);
    
    
            ConverterModel converterData = this.converterData.get(position);
    
            viewHolder.image.setImageResource(converterData.getImage());
            viewHolder.currencyCode.setText(converterData.getCurrencyCode());
            viewHolder.currencyName.setText(converterData.getCurrencyName());
            viewHolder.amountEntered.setText(converterData.getDefaultRate());
    
            viewHolder.amountEntered.setTag(converterData.getId());
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        return convertView;
    }
    
    private static class ViewHolder {
        ImageView image;
        TextView currencyCode;
        TextView currencyName;
        EditText amountEntered;
        ConstraintLayout containerRow;
    }

I tried to multiply the amount entered in the onTextChanged event, but the amount changes only in one EditText.

viewHolder.amountEntered.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.d("beforeTextChanged", "beforeTextChanged");
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            viewHolder.amountEntered.setText("");
            int sum = Integer.parseInt(viewHolder.amountEntered.getText().toString()) * 100;
            viewHolder.amountEntered.setText(sum);
            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.d("afterTextChanged", "afterTextChanged");
            }
        });

0 Answers0