У меня есть Activity
, который содержит 2 TextView
, показывает числовое значение, а под ними RecyclerView
, RecyclerView
имеет TextView
с числовым значением и SwitchCompat
, я хочу если пользователь повернул SwitchCompat
на ON
число в TextView
внутри RecyclerView
, которое будет добавлено к номеру в TextView
за пределами RecyclerView
, и если SwitchCompat
переключено на OFF
число вычитается из числа снаружи TextView
.
Я попытался передать TextView
в RecyclerViewAdapter
и использовать его в классе адаптеров, но ошибка возникает из-за того, что он работает нормально в первый раз, но при прокрутке случайных чисел, которые нужно сложить и вычесть из TextView
,, вот мой код:
AdapterClass.java
@Override
public void onBindViewHolder(@NonNull final ExpensesListAdapterViewHolder holder, int position) {
...
holder.switchComp.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
eList.get(holder.getAdapterPosition()).setmFlag(isChecked);
if (isChecked) {
if (TextUtils.isEmpty(eList.get(holder.getAdapterPosition()).getmExpenseName())) {
// switch is on + Increase Budget
totalBudget.setText(String.valueOf(Double.parseDouble(totalBudget.getText().toString())+eList.get(holder.getAdapterPosition()).getmAmount()));
totalRemaining.setText(String.valueOf(Double.parseDouble(totalRemaining.getText().toString())+eList.get(holder.getAdapterPosition()).getmAmount()));
} else if (TextUtils.isEmpty(eList.get(holder.getAdapterPosition()).getmI_B_Name())) {
// switch is on + expense
totalExpense.setText(String.valueOf(Double.parseDouble(totalExpense.getText().toString())+eList.get(holder.getAdapterPosition()).getmAmount()));
totalRemaining.setText(String.valueOf(Double.parseDouble(totalRemaining.getText().toString())-eList.get(holder.getAdapterPosition()).getmAmount()));
}
} else {
if (TextUtils.isEmpty(eList.get(holder.getAdapterPosition()).getmExpenseName())) {
// switch is off + increase budget
totalBudget.setText(String.valueOf(Double.parseDouble(totalBudget.getText().toString())-eList.get(holder.getAdapterPosition()).getmAmount()));
totalRemaining.setText(String.valueOf(Double.parseDouble(totalRemaining.getText().toString())-eList.get(holder.getAdapterPosition()).getmAmount()));
} else if (TextUtils.isEmpty(eList.get(holder.getAdapterPosition()).getmI_B_Name())) {
// switch is off + expense
totalExpense.setText(String.valueOf(Double.parseDouble(totalExpense.getText().toString())-eList.get(holder.getAdapterPosition()).getmAmount()));
totalRemaining.setText(String.valueOf(Double.parseDouble(totalRemaining.getText().toString())+eList.get(holder.getAdapterPosition()).getmAmount()));
}
}