我Android Studio中工作,並檢索從火力地堡以下數據:如何在檢索Firebase數據後循環訪問HashMap?
coloursets:
default:
name: "Default colour set"
description: "Default set of colours"
colours:
white:
red: 255
green: 255
blue: 255
name: "white"
black:
red: 0
green: 0
blue: 0
name: "black"
我檢索它像這樣:
public void initialiseColourSet(ValueEventListener listener) {
if(this.key == null) return;
DatabaseReference mColourSetReference = FirebaseDatabase.getInstance().getReference()
.child("coloursets").child(this.key);
mColourSetReference.addListenerForSingleValueEvent(listener);
}
,其中 「關鍵」 是設置爲「默認」,「聽衆」是:
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<ChartColour> colourList= new ArrayList<>();
Map<String, HashMap> objectMap = (HashMap<String, HashMap>) dataSnapshot.getValue();
// SOMETHING NEEDS TO GO HERE - SEE BELOW
}
}
ColourSet類ha S中的以下內容:
String key, name, description;
ArrayList<ChartColour> colours = new ArrayList<>();
所以,我要循環「ObjectMap的」,讓colourSet名稱和描述,然後得到的顏色列表到本地變量colourList,然後將其用於設置「顏色'在ColourSet對象中。
我只是無法在偵聽器中獲得正確的循環。我查了很多答案,但沒有一個似乎適用於我的案例。
目前我已在聽衆中的以下內容:
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<ChartColour> colourList= new ArrayList<>();
Map<String, HashMap> objectMap = (HashMap<String, HashMap>) dataSnapshot.getValue();
for (Map.Entry<String, HashMap> entry : objectMap.entrySet()) {
switch (entry.getKey()) {
case "name":
mColourSet.setName(String.valueOf(entry.getValue()));
break;
case "description":
mColourSet.setDescription(String.valueOf(entry.getValue()));
break;
case "colours":
// Need some kind of FOR LOOP here
ChartColour colour = new ChartColour();
/*
colour.setKey(??);
colour.setName(??);
colour.setRed(??);
... etc ... */
colourList.add(colour);
// END OF FOR LOOP
mColourSet.setColours(colourList);
}
}
}
});
所以,我只是不知道我需要把在for循環的監聽器,以循環在顏色。我到目前爲止所嘗試的所有東西都只是給了我一個閃爍的紅線,而沒有任何解釋什麼是錯的。
任何人都可以告訴我嗎?感謝您提供任何幫助。
我不確定你的紅色曲線在哪裏,但你的'HashMap'作爲外部映射的值類型沒有設置泛型類型,這意味着鍵和值都解析爲'Object' 。 – Dave
謝謝。你的意思是objectMap嗎?他們應該設置什麼? – Sharon
我的意思是在'Map'中,'HashMap'部分沒有指定類型參數,所以它實際上是'HashMap