プロジェクトFirebase
のデータ ストレージにを使用しており、 を使用してデータを処理しています。ただし、できるだけ効率的に行っているかどうかはわかりません。データを取得してフォーマットするためのベスト プラクティスについてアドバイスをお願いします。私のリポジトリは次のようになります....Android
Firebase Java API
Firebase
-POLLS
NUMPOLLS - 5
(pollskey) - NAME - Poll1
NUMELECTIONS - 2
ELECTIONS
(electionskey) - NAME - Election1
NUMNOMINATIONS - 2
NUMVOTERS - 2
NUMBERTOELECT - 1
VOTERS - (votesrkey) - NAME - Charles
NUMBER - (678) 333-4444
.
.
.
(voterskey) - ...
NOMINATIONS - (nominationskey) - NAME - Richard Nixon
NUMBEROFVOTES - 2
.
.
.
(nominationskey) - ...
.
.
.
(electionskey) - ...
.
.
.
(pollskey) - ...
たとえば、ここでは、世論調査からすべてのデータを取得して、世論調査名、選挙名、各選挙の候補者名と投票数をリストしようとしています。DataSnapshot
このように主な活動の機能中にPOLLS レベルを取得しOnCreate()
ます...
private static final Firebase polls = pollsFirebase.child("Polls");
protected void onCreate(Bundle savedInstanceState) {
polls.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot child : snapshot.getChildren()) {
if (!child.getName().equals("NumPolls")) {
createPollTableAndHeaders(child);
}
}
}
});
}
次に、 を連続して呼び出し、結果のキーをチェックすることgetValue()
により、必要な個々のデータの読み取りに進みます...DataSnapshots
HashMaps
private void createPollTableAndHeaders(DataSnapshot poll) {
String pollName = "";
int numPolls;
Object p = poll.getValue();
if (p instanceof HashMap) {
HashMap pollHash = (HashMap) p;
if (pollHash.containsKey("Name")) {
pollName = (String) pollHash.get("Name");
}
if (pollHash.containsKey("Elections")) {
HashMap election = (HashMap) pollHash.get("Elections");
Iterator electionIterator = election.values().iterator();
while (electionIterator.hasNext()) {
Object electionObj = electionIterator.next();
if (electionObj instanceof HashMap) {
HashMap electionHash = (HashMap) electionObj;
if (electionHash.containsKey("Name")) {
String electionName = (String) electionHash.get("Name");
}
}
};
}
}
これは、データ構造をドリルダウンするのに非常に面倒な方法のように思えます。より良い方法があるかどうか疑問に思っています。
ドキュメントでメソッドを見てきましたgetValue(java.lang.Class<T> valueType)
が、プリミティブ型のコンテナーだけでなく、構成されたオブジェクトを操作しているため、私の場合は機能しませんでした。関数は、どのFirebase
データをモデル オブジェクトのどのメンバー変数に割り当てるかをどのように認識しますか? キー名とメンバー変数を一致させますか?Firebase
したがって、これらは大文字と小文字を区別して、まったく同じにする必要がありますか? Firebase
にプッシュするときに生成されるような、生成されたキー名をどのように処理しList
ますか? 合成オブジェクトのモデル オブジェクトをどのように構築しますか?