我有一个 RecyclerView,其中包含复选框和文本视图。文本视图中应显示数字 10、20、30、40……直到 500。所选的复选框应将与复选框对应的文本视图中的数字相加。例如,如果用户仅选择值为 10,则 TextView 将显示 10。如果用户还选择了 20,则 TextView 将显示 30(20 + 10)。如果用户再次取消选择 10,则 TextView 将显示 20,依此类推。当我单击复选框时,某些随机复选框也会被选中。我尝试了 stackoverflow 上的一个解决方案,但它没有起作用。我陷入了困境,请帮帮我。这是我的代码:
RecyclerAdapter.java:
RecyclerAdapter.java:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerHolder>
{
@NonNull
@Override
public RecyclerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new RecyclerHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_lyt,parent,false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerHolder holder, final int position) {
holder.number.setText(Integer.toString((Integer) alldata.get(position)));
final String text=holder.number.getText().toString();
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.e("Checked","Checked");
if(checkeddata!=null)
{
if (checkeddata.size()==0)
{
checkeddata.add(text);
}
else {
if(checkeddata.contains(text))
{
checkeddata.remove(text);
}
else {
checkeddata.add(text);
}
}
Iterator iterator=checkeddata.iterator();
int sumnumber=0;
while (iterator.hasNext())
{
sumnumber= sumnumber+Integer.parseInt((String) iterator.next());
}
sum.setText(Integer.toString(sumnumber));
}
}
});
}
@Override
public int getItemCount() {
return alldata.size();
}
public class RecyclerHolder extends RecyclerView.ViewHolder
{
TextView number;
CheckBox checkBox;
public RecyclerHolder(View itemView) {
super(itemView);
number=itemView.findViewById(R.id.number);
checkBox=itemView.findViewById(R.id.check);
}
}
}
public void data()
{
int g=1;
for(int i=10;i<=500;i++)
{
if((i/10)==g)
{
g=g+1;
alldata.add(i);
}
}
}
recycler_lyt.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:layout_width="150dp"
android:layout_height="wrap_content"
android:id="@+id/number"
android:textSize="20sp"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/check"
android:checked="false"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>