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