【发布时间】:2021-10-14 05:02:45
【问题描述】:
在 recyclerview 中单击项目后,我正在尝试在 firebase 实时数据库中为子项设置值
在 Firebase 实时数据库中为子级设置值后,Recyclerview 每次都会重新加载
我为 recyclerview 使用自定义适配器
我该如何解决这个问题...
代码
public class date_adapter extends RecyclerView.Adapter<date_adapter.MyViewHolder> {
Context context;
private ArrayList<date_model> list;
int times;
private choosing_model model;
private ArrayList<date_model> doneItemsAre;
private ArrayList<date_model> dateModels;
date_adapter(Context context, ArrayList<date_model> list, choosing_model model, ArrayList<date_model> date_models) {
this.context = context;
this.list = list;
this.model = model;
this.dateModels = date_models;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.date_view_item, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.month.setText(list.get(position).getMonth());
holder.date.setText(String.valueOf(list.get(position).getDate()));
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
doneItemsAre = new ArrayList<>();
if (model.isDone()){
if ((dateModels.get(position).isChecked())) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("user").child(user.getUid()).child("challenges").child("challenge").child(model.getChoosingTitle()).child("oneWeek").child(String.valueOf(position)).child("checked");
holder.calendarCard.setCardBackgroundColor(Color.parseColor("#03ADFF"));
holder.month.setTextColor(Color.parseColor("#ffffff"));
holder.date.setTextColor(Color.parseColor("#ffffff"));
reference.setValue(true);
}
}
}
@Override
public int getItemCount() {
return list.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView month, date;
CardView calendarCard;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
month = itemView.findViewById(R.id.calendar_month);
date = itemView.findViewById(R.id.calendar_date);
calendarCard = itemView.findViewById(R.id.calendar_card);
}
}
}
这是我设置值的代码
【问题讨论】:
-
请将您的问题与您的代码示例一起发布,您将获得更快的响应
标签: android firebase firebase-realtime-database android-recyclerview