【发布时间】:2021-09-28 10:09:18
【问题描述】:
我有一个任务应用程序,人们可以在其中单击任务的复选框,任务的颜色会改变。但是我在将这个条件与视图绑定时遇到了问题。当复选框被选中时,颜色会发生变化,但是当应用程序关闭并再次打开时,复选框不会被选中并且颜色会恢复正常。在这种情况下,如何保留复选框的选中状态和文本颜色。
我的适配器类 -
public void onBindViewHolder(@NonNull TaskHolder holder, int position) {
Task currentTask = tasks.get(position);
holder.a_tname.setText(currentTask.getTname());
holder.a_tdate.setText(currentTask.getTDate());
holder.a_ttime.setText(currentTask.getTTime());
holder.a_tprior.setText(currentTask.getTprior());
holder.bind(tasks.get(position));
holder.checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.bind2(tasks.get(position));
}
});
}
class TaskHolder extends RecyclerView.ViewHolder {
private final TextView a_tname;
private final TextView a_tdate;
private final TextView a_ttime;
private final TextView a_tprior;
ImageView priorityIndicator;
CheckBox checkbox;
public TaskHolder(View itemView) {
super(itemView);
a_tname = itemView.findViewById(R.id.a_tname);
a_tdate=itemView.findViewById(R.id.a_tdate);
a_ttime = itemView.findViewById(R.id.a_ttime);
a_tprior = itemView.findViewById(R.id.a_tprior);
priorityIndicator = itemView.findViewById(R.id.priorityIndicator);
checkbox = itemView.findViewById(R.id.checkbox);
private void bind2(Task task){
if(checkbox.isChecked()){
int checkedtext = ContextCompat.getColor(a_tname.getContext(), R.color.grey);
a_tname.setTextColor(checkedtext);
int checkeddate = ContextCompat.getColor(a_tdate.getContext(), R.color.grey);
a_tdate.setTextColor(checkeddate);
int checkedtime = ContextCompat.getColor(a_ttime.getContext(), R.color.grey);
a_ttime.setTextColor(checkedtime);
Toast.makeText(checkbox.getContext(), "Way to go! Now swipe to delete", Toast.LENGTH_LONG).show();
}
if(!checkbox.isChecked()){
int untext = ContextCompat.getColor(a_tname.getContext(), R.color.black);
a_tname.setTextColor(untext);
int undate = ContextCompat.getColor(a_tdate.getContext(), R.color.black);
a_tdate.setTextColor(undate);
int untime = ContextCompat.getColor(a_ttime.getContext(), R.color.black);
a_ttime.setTextColor(untime);
}
}
请问我是怎么做到的
【问题讨论】:
-
选中复选框时,需要在模型类中保存复选框的状态。
-
就像@akhilnair 所说的那样。您的模型中需要一个布尔值。这是使用您的 bind2 方法设置的。然后再次在您的 onBindViewHolder 中,您需要将其分配给复选框。 holder.checkbox.setChecked(currentTask.booleanValue);
-
谢谢,但我的复选框已附加到回收站视图的项目布局中。如何将它保存在我的模型类中?
-
你能详细说明你的答案吗,我对android很陌生,它会很有帮助。
标签: java android-studio android-recyclerview android-databinding