2016-11-16 2 views
5

今、Firebaseデータベースコンソールのデータベース階層は次のとおりです。Android Firebaseデータベース:イベントリスナーのない単一のデータフェッチ

enter image description here

私はfirebaseデータベースにデータを入力するには、次のコードを使用しています。

public void createRecordInDB(PlaceListItem placeListItem) 
    { 
     mDB= FirebaseDatabase.getInstance().getReference(); 
     mListItemRef = mDB.child("Places"); 

     for(int i = 0; i < placeListItem.getResults().size(); i++) { 
      // Create new List Item at /listItem 
      String placeId = placeListItem.getResults().get(i).getPlaceId().toString(); 
      String key = placeId; 
      PlaceDBModel placeDBModel = new PlaceDBModel(); 
      placeDBModel.setPlaceName(placeListItem.getResults().get(i).getName()); 
      placeDBModel.setVicinity(placeListItem.getResults().get(i).getVicinity()); 
      placeDBModel.setLattitude(placeListItem.getResults().get(i).getGeometry().getLocation().getLat().toString()); 
      placeDBModel.setLongitude(placeListItem.getResults().get(i).getGeometry().getLocation().getLng().toString()); 
      placeDBModel.setPlaceID(placeId); 
      if(isItWorking(key)) 
       placeDBModel.setWorkingOrNot("Working"); 
      else 
       placeDBModel.setWorkingOrNot("Not Working"); 
      HashMap<String, Object> result = new HashMap<>(); 
      result.put(key, placeDBModel); 
      mListItemRef.updateChildren(result); 

     } 

ウェブサービスからデータを初めてロードするときは、すべてのデータをfirebaseデータベースに入力するだけです。今私のアプリ(ボタンクリック)の1つの画面で、私は特定のノードのいくつかのデータを更新することができます。今度は再び前の画面に戻り、Web APIからデータをロードすると、すべてのデータがfirebaseデータベースに上書きされます。ボタンのクリック時と同じように変更した値を維持する必要があります。だから私はノード内のその特定のデータを読んで、それが働いていれば値 "作業中"以外の "作業中ではない"を設定したいと思っています。これが私の質問を明確にすることを願っています。 「いくつかのケースでは、それは我々がこれを容易にするヘルパー関数を作成したら呼ばれ、その後すぐに削除されるコールバックのために有用である可能性がある:」

+0

このアクティビティのコード全体を共有してください。 –

+0

あなたの質問にJSONツリーの画像が含まれています。実際のJSONをテキストとして置き換えてください.FirebaseデータベースコンソールのExport JSONリンクをクリックすると簡単に取得できます。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

関連する問題