我正在尝试将一些对象存储在Firebase中,然后再访问它们,但是我在访问部分时遇到了问题。我可以存储一个对象并检索它,但是当我使用.push()时,我无法弄清楚如何操作多个对象。
到目前为止,我尝试过的任何内容都没有用,文档也没有真正帮助过。基本上,我有2个按钮和一个TextView。一个按钮创建一个对象的实例并将其添加到Firebase,另一个按钮应该读取它们并在TextView中显示它们的一些数据。
这是添加对象的方法:
public void startWorkout(View view) {
DatabaseReference dbRef = database.getReference();
Workout workout = new Workout(10,30,20,"The Gym");
dbRef.child("workouts")
.push()
.setValue(workout);
}
这是获取对象的方法:
public void endWorkout(View view) {
DatabaseReference dbRef = database.getReference();
dbRef.child("workouts").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Workout firstWorkout = dataSnapshot.getValue(Workout.class);
TextView textView = (TextView) findViewById(R.id.test_text_view_Workouts);
textView.setText(firstWorkout.getLocation());
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "firebase call didn't work!");
}
});
}
这是来自firebase的JSON(我编辑了Firebase控制台中的一些值,因此值通常不一样):
{
"workouts" : {
"-KKdzxVp9DDOpBsvhU3_" : {
"endTime" : 30,
"location" : "Home",
"startTime" : 10,
"totalTime" : 20
},
"-KKdzy13b6_tyaiQbW9W" : {
"endTime" : 30,
"location" : "The Gym",
"startTime" : 10,
"totalTime" : 20
},
"-KKe--wkPRQYWhcCBpyF" : {
"endTime" : 30,
"location" : "The Gym",
"startTime" : 10,
"totalTime" : 20
}
}
}
这是我创建的Workouts课程:
public class Workout {
// Declaring variables needed to store workout data
public long startTime;
public long endTime;
public long totalTime;
public String location;
// Empty Constructor required for Firebase
public Workout(){
}
public Workout(long startTime, long endTime, long totalTime, String location) {
this.startTime = startTime;
this.endTime = endTime;
this.totalTime = totalTime;
this.location = location;
}
// Calculate totalTime
public void calculateTotalTime(){
this.totalTime = endTime - startTime;
}
// Getters and Setters
public long getStartTime() {
return this.startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
public long getEndTime() {
return this.endTime;
}
public void setEndTime(long endTime) {
this.endTime = endTime;
}
public long getTotalTime() {
return this.totalTime;
}
public void setTotalTime(long totalTime) {
this.totalTime = totalTime;
}
public String getLocation() {
return this.location;
}
public void setLocation(String location) {
this.location = location;
}
}
我对编程比较陌生,所以我很感激我能得到的任何帮助。谢谢!
答案 0 :(得分:2)
没关系。我想到了!
这是一个组合的东西,但基本上,我的列表(这是活动的一部分,我没有放在上面的代码片段中)没有正确实现,现在是:
List<Workout> workouts = new ArrayList<Workout>();
我从这里找到的for-each循环中应用了一些逻辑:how to get all child list from Firebase android