尝试使用.push()访问存储在Firebase中的对象

时间:2016-06-19 20:38:52

标签: android firebase firebase-realtime-database

我正在尝试将一些对象存储在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;
}

}

我对编程比较陌生,所以我很感激我能得到的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

没关系。我想到了!

这是一个组合的东西,但基本上,我的列表(这是活动的一部分,我没有放在上面的代码片段中)没有正确实现,现在是:

   List<Workout> workouts = new ArrayList<Workout>();

我从这里找到的for-each循环中应用了一些逻辑:how to get all child list from Firebase android