【发布时间】:2021-11-02 01:04:33
【问题描述】:
我有一个 RecyclerView 和 CardViews,它们来自我的 Firebase 实时数据库,用于不同的活动,例如日常用餐。我向CardView 添加了一个删除按钮,我想实现从 UI 和数据库功能中删除。我知道如何分别执行这两项操作,但我不确定在从 UI 中删除 CardView 后如何更新数据库。
目前,它正在从 UI 中删除,而不是从数据库中删除,所以当我回到 activity 时,卡片会重新出现。每顿饭都有自己的随机 ID,不确定这是否会有所不同,但认为这很重要。
适配器删除功能:
foodHolder.deleteMeal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
meals.remove(position);
notifyDataSetChanged();
}
});
进餐活动(设置适配器的位置):
mealRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
int total = 0;
for (DataSnapshot mealSnapshot : task.getResult().getChildren()) {
String grams = mealSnapshot.child("grams").getValue(String.class);
if (grams == null) {
textViewFoodCounter.setText("0");
} else {
total += Integer.parseInt(grams);
textViewFoodCounter.setText(String.valueOf(total));
}
if (meals != null) {
noMealsImg.setVisibility(View.GONE);
noMealsText.setVisibility(View.GONE);
} else {
noMealsImg.setVisibility(View.VISIBLE);
noMealsText.setVisibility(View.VISIBLE);
}
progressBar.setMax(1000); // make dynamic
ObjectAnimator.ofInt(progressBar, "progress", Integer.parseInt(grams))
.setDuration(300)
.start();
Meal data = mealSnapshot.getValue(Meal.class);
meals.add(data);
}
foodAdapter = new FoodAdapter(meals);
foodRecyclerView.setAdapter(foodAdapter);
} else {
Log.d("TAG", task.getException().getMessage());
}
}
});
卡片视图:
Firebase 膳食层次结构:
【问题讨论】:
-
谢谢@AlexMamo,是的,我最终遵循了 YouTube 上的教程,将我的 RecyclerView 转换为 FirebaseRecyclerView 和实施者滑动删除以及单击按钮 :) 非常复杂,但最终到达了那里!
-
很高兴听到这个消息。如果您找到了解决方案,您可能会考虑回答您自己的问题。所以未来的开发者可以从中受益。
-
我会的,好主意!今天某个时候会这样做:)
标签: java android firebase firebase-realtime-database android-recyclerview