【发布时间】:2018-05-07 14:49:10
【问题描述】:
我有一个 Activity,其中包含 2 个 TextView 显示一个数值,并且在它们下面有一个 RecyclerView,RecyclerView 有一个带有数值的 TextView 和一个 SwitchCompat,我想要如果用户将SwitchCompat 转换为ON,则RecyclerView 内的TextView 中的数字将添加到RecyclerView 之外的TextView 的数字上,并且如果SwitchCompat 切换为@ 987654334@外面的数字减去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()));
}
}
【问题讨论】:
-
需要对数据集进行修改,然后通知适配器..
-
但我没有改变 recyclerview 的值?
标签: java android android-recyclerview switchcompat