2016-11-16 67 views
5

现在,以下是我在Firebase数据库控制台中的数据库层次结构。Android Firebase数据库:没有事件侦听器的单个数据抓取

enter image description here

我使用下面的代码将数据输入到数据库火力点。

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); 

     } 

看到我第一次从web服务加载数据时,我只是将所有数据输入到firebase数据库。现在在我的应用程序的一个屏幕(点击按钮)中,我可以更新特定节点中的一些数据。现在,当我再次回到上一个屏幕并从Web API加载数据时,它会将所有数据覆盖到Firebase数据库中。我需要保持更改的值,因为它是在点击按钮时。因此,我想要读取节点中的特定数据,如果它正在工作,则将值设置为“正在工作”或“未正常工作”。我希望这会澄清我的问题。

+0

请分享您的整个活动的代码。 –

+0

你已经在你的问题中包含了JSON树的图片。请将实际的JSON替换为文本,您可以通过单击Firebase数据库控制台中的导出JSON链接轻松获取该文本。将JSON作为文本可以搜索,使我们能够轻松使用它来测试您的实际数据,并将其用于我们的答案中,并且通常只是一件好事。 –

回答

相关问题