也許是一個令人困惑的標題,但我會盡我所能地盡力解釋。 創建特定片段時,我想將Firebase中的「scriptURL」子元素的值加載到TextView字段中。 在創建片段時,「scriptURL」子級的「同級」的值由args攜帶到片段中。如何從已知的兒童價值中獲取Firebase參考號
我的火力結構是這樣的:
root
-scripts
--UID
---scripttitle:"title"
---scripturl:"url"
--UID
---scripttitle:"title"
---scripturl:"url"
作爲片段被加載我有「scripttitle」的字符串中的值。 我想用它來獲得相應的scripturl,但不知道如何做到這一點。
我的片段的代碼:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
Bundle args = this.getArguments();
String clickedScript = args.getString("clickedScript", null);
RelativeLayout llLayout = (RelativeLayout) inflater.inflate(R.layout.fragment_script_details, container, false);
final TextView clicked = (TextView)llLayout.findViewById(R.id.scriptTitle);
final TextView url = (TextView)llLayout.findViewById(R.id.textView7);
clicked.setText(clickedScript);
Firebase ref = new Firebase("http://theatre-assistant.firebaseio.com/scripts").child(clickedScript);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
url.setText((String) snapshot.child("scripturl").getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
return llLayout;
}
這樣的文本字段中結束了空白。我相信我的firebase ref是離開的,但那是我能想到的唯一的事情。 希望這是有道理的,有人可以指出我正確的方向來完成這項工作。 我對此很陌生,所以我可能會在我的想法中脫穎而出。
非常感謝您的回答!那樣做了!我有一種感覺,這是沿着這條線,但無法繞過它。 –
如果下一次嘗試隔離出現問題的代碼,它會有幫助。例如,這個問題與Android無關,這意味着您在一個(更簡單的)Java應用程序中遇到同樣的問題。隔離問題使得你更有可能自己發現問題*和*如果你不這樣做,它會使其他人更容易發現問題(因爲他們有更少的事情要考慮)。 –
關於您的數據結構的說明:您似乎希望'scripttitle'值是唯一的。在這種情況下,你可能更好地將它們存儲爲'/ scripts/$ scripttitle/scripturl'。通過這種結構,您的原始代碼可以發揮作用,您可以保證腳本標題是唯一的,並且可擴展性更強(因爲您可以直接訪問子節點,而不是發起潛在的昂貴查詢)。 –