2017-07-31 29 views
0

我在火力地堡的結構如下:如何在Firebase中的元素內獲取列表?

"surveys" : { 
"-Kq2r56mEoZ0LDBbi47W" : { 
    "name" : "Survey 1", 
    "questions" : [ { 
    "name" : "Question 1" 
    },{ 
    "name" : "Question 2" 
    },{ 
    "name" : "Question 3" 
    } ]  
} 

這裏是對應的Java類Survey.java

public class Survey { 
    private String name; 
    private ArrayList<String> questions = new ArrayList<>(); 

    public Survey(){} 
    // Getters and setters 
    ... 
} 

在我的活動我試圖讓調查元素是這樣的:

final DatabaseReference surveysReference = database.getReference(FirebaseReferences.SURVEY_REFERENCE).child(currentId); 
surveysReference.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     SurveyDao survey = snapshot.getValue(SurveyDao.class); 
     surveyList.add(survey); 
    } 

    @Override 
    public void onCancelled(DatabaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 

    } 
}); 

但是我不斷收到錯誤,因爲結構不正確。 如何獲得我的「問題」列表並將其保存在我的Survey對象中?

在此先感謝

+0

您可以使用http://www.jsonschema2pojo.org/從json創建響應類 –

回答

0

問題調查應該是:

List<Map<String, String>> 

代替:

List<String> 

您還可以創建一個問題類:

@IgnoreExtraProperties 
public class Question { 

    public String name; 

    public Question() { 
     // Default constructor required for calls to DataSnapshot.getValue(Question.class) 
    } 

    public Question(String name) { 
     this.name = name; 
    } 

} 

,它無線將是:

List<Question> 

檢查Firebase documentation

0

在調查輸入反應包含另一個對象ieKq2r56mEoZ0LDBbi47W是通過你的調查類像

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Surveys { 

@SerializedName("-Kq2r56mEoZ0LDBbi47W") 
@Expose 
private Kq2r56mEoZ0LDBbi47W kq2r56mEoZ0LDBbi47W; 

public Kq2r56mEoZ0LDBbi47W getKq2r56mEoZ0LDBbi47W() { 
return kq2r56mEoZ0LDBbi47W; 
} 

public void setKq2r56mEoZ0LDBbi47W(Kq2r56mEoZ0LDBbi47W kq2r56mEoZ0LDBbi47W) { 
this.kq2r56mEoZ0LDBbi47W = kq2r56mEoZ0LDBbi47W; 
} 

} 

和Kq2r56mEoZ0LDBbi47W類包含的問題列表

import java.util.List; 
import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Kq2r56mEoZ0LDBbi47W { 

@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("questions") 
@Expose 
private List<Question> questions = null; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public List<Question> getQuestions() { 
return questions; 
} 

public void setQuestions(List<Question> questions) { 
this.questions = questions; 
} 

} 

和問題類:

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Question { 

@SerializedName("name") 
@Expose 
private String name; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

} 
0

如果你的調查類是這樣的:

public class Survey { 
    private String name; 
    private ArrayList<String> questions = new ArrayList<>(); 

    public Survey(){} 
    // Getters and setters 
    ... 
} 

那麼你的火力結構應該是這樣的:

"surveys" : { 
    "-Kq2r56mEoZ0LDBbi47W" : { 
     "name" : "Survey 1", 
     "questions" : [ 
      { 
       0 : "Question 1" 
      },{ 
       1 : "Question 2" 
      },{ 
       2 : "Question 3" 
      } 
     ]  
} 

記住的ArrayList或列表,就像一個地圖,而是使用integer作爲指數。它從0開始

相關問題