【发布时间】:2016-08-11 02:22:44
【问题描述】:
我想知道如何使用另一个类中的按钮来取消选择我的 3 个 recyclerviews(Tablayout,每个标签一个 recyclerview)中的所有复选框。我已将选中的值保存在共享首选项中,如下所示:
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyViewHolder> {
Context mContext;
ArrayList<Workout> workout;
SharedPreferences prefs;
int firstSecondOrThird;
int colorResId = R.color.defaultcard;
public MyRecyclerAdapter(Context context, ArrayList<Workout> workout, int thePosition) {
mContext = context;
this.workout = workout;
this.firstSecondOrThird = thePosition;
}
// INITIALIZE HOLDER
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.workout_item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
//BIND DATA TO VIEWS
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.exercise.setText(workout.get(position).getExercise());
holder.percent.setText(workout.get(position).getPercent());
holder.reps.setText(workout.get(position).getReps());
holder.weight.setText(workout.get(position).getWeight());
holder.check1.setOnCheckedChangeListener(null);
final Workout isCheck = workout.get(position);
prefs = mContext.getSharedPreferences("checkState", Context.MODE_PRIVATE);
holder.check1.setChecked(prefs.getBoolean(firstSecondOrThird+"checkState"+position, false));
isCheck.setCheck1(prefs.getBoolean(firstSecondOrThird+"checkState"+position, false));
holder.check1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
prefs.edit().putBoolean(firstSecondOrThird+"checkState"+position, isChecked).apply();
}
});
}
这里是我尝试清除共享首选项的地方,我认为这也会清除所有复选标记:
mButton = (Button) findViewById(R.id.button2);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs.edit().clear();
prefs.edit().apply();
Toast.makeText(getApplicationContext(), "Checkboxes Cleared.", Toast.LENGTH_LONG).show();
}
});
}
不幸的是,点击按钮后,之前选中的所有复选框仍然被选中。提前致谢!
编辑:我尝试添加一个 if 语句以查看是否可行,但现在它不加载所有已保存的复选标记,即使未单击按钮也是如此...大声笑
prefs = mContext.getSharedPreferences("checkState", Context.MODE_PRIVATE);
String restoredCheck = prefs.getString("checkState", null);
if (restoredCheck != null) {
holder.check1.setChecked(prefs.getBoolean(firstSecondOrThird+"checkState"+position, false));
} else holder.check1.setChecked(false);
【问题讨论】:
标签: android android-recyclerview android-adapter android-checkbox