【发布时间】:2021-04-16 02:51:35
【问题描述】:
我希望能够为数组列表中的项目命名,并在我的 firebase 实时数据库中使用这些名称。目前,我有一个设置,如果用户处于与以前不同的一周,我将创建一个“ProgressWeek”对象。对于这个对象,我是这样构造它的:
myRef.child(week_year).setValue(new ProgressWeek(weekName, days));
'weekName' 是一个包含星期名称的字符串变量,即'16 April - 23 April'。 'days' 是一个 ArrayList。 ProgressDay 是这样构造的:
days.add(new ProgressDay(name));
'name' 是当天的名称,即'Thu, 22-04'。
我遇到的问题是,将其存储在 Firebase 实时数据库中时,我得到以下信息:
'days' 表示 ArrayList,'weekName' 是构造新 ProgressWeek 对象时给出的 String var。 如您所见,日期是通过索引或它们添加到列表中的顺序排序的。这并不理想,因为如果我想要'Fri, 16-04' 天的数据,我将不得不遍历所有天,并且只获取 dayName.equals("Fri, 16-04") 的数据。这也需要培养不同的听众。
我想要的是能够使用类似下面的东西来获取我想要的数据。
myRef.child("days").child(theDateOfToday).child("theDataThatIWant").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.getValue() != null)
{
myData = snapshot.getValue(Integer.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我之所以使用 Objects 来输入数据库,是因为将来我计划使用 RecyclerView 来显示该周的周数和所有天数。
ProjectWeek 类:
import java.util.ArrayList;
public class ProgressWeek {
private String weekName;
private ArrayList<ProgressDay> days;
ProgressWeek()
{
}
ProgressWeek(String weekName, ArrayList<ProgressDay> days)
{
setWeekName(weekName);
setDays(days);
}
public String getWeekName() {
return weekName;
}
public void setWeekName(String weekName) {
this.weekName = weekName;
}
public ArrayList<ProgressDay> getDays() {
return days;
}
public void setDays(ArrayList<ProgressDay> days) {
this.days = days;
}
}
我想要在我的数据库中作为 JSON 的内容:
{
“用户”:{ “示例用户 ID”:{ “用户数据1”:68, “用户数据2”:49, “用户数据3”:5, “周”:{ “16”:{ “天” : [ { "dayName" : "周六 17-04", “dataAboutDay”:0 }, { "dayName" : "Sun, 18-04", “dataAboutDay”:0 }, { "dayName" : "星期一 19-04", “dataAboutDay”:0 }, { "dayName" : "星期二,20-04", “dataAboutDay”:0 }, { "dayName" : "星期三,21-04", “dataAboutDay”:0 }, { "dayName" : "星期四 22-04", “dataAboutDay”:0 }], "weekName" : "4 月 16 日 - 4 月 23 日" } }, “用户数据4”:60, “用户数据5”:40, “用户名”:“示例用户” } } }
注意:我希望使用他们的 dayName 来标识日期。
【问题讨论】:
-
我不确定我是否理解当前结构的问题,但这可能无关紧要。您能否编辑您的问题以显示您的
ProgressWeek课程以及您希望存储在数据库中的 JSON(请以文本形式)? -
编辑了问题
标签: android firebase-realtime-database