0

緯度と経度と643004687464300468756430046876のようなすべてのデバイスのデータを取得したいと思います。モデルクラスまたはFirebaseのリストにデータを保存

enter image description here

new GetDataFromFirebase().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 


    FirebaseDatabase database = FirebaseDatabase.getInstance(); 

    myRef = database.getReference("GPSLocationHistory/DevicesLatest/6430046874"); 


    myRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      Map<String, Object> objectHashMap = dataSnapshot.getValue(objectsGTypeInd); 
      ArrayList<Object> objectArrayList = new ArrayList<Object>(objectHashMap.values()); 
      System.out.println("value 0= " + objectArrayList.get(0) + " value 1= " + objectArrayList.get(1) + "value 2= " + objectArrayList.get(2) + " value 3= " + objectArrayList.get(3) + "value 4= " + objectArrayList.get(4) + " value 5= " + objectArrayList.get(5) + " value 6= " + objectArrayList.get(6)); 
      // LatLng location = new LatLng(latitude, longitude); 
      String latLng = objectArrayList.get(2).toString() + "," + objectArrayList.get(3).toString(); 
      System.out.print("oyy " + latLng); 
      Toast.makeText(MapsActivity.this,""+latLng.toString(),Toast.LENGTH_SHORT).show(); 

      latlongFcm = new LatLng(Double.parseDouble(objectArrayList.get(2).toString()), Double.parseDouble(objectArrayList.get(3).toString())); 
      mMap.clear(); 
      Marker marker; 
      marker = mMap.addMarker(new MarkerOptions() 
        .position(latlongFcm) 
        .title("San Francisco") 
        .snippet("Population: 776733")); 


      for (DataSnapshot alert : dataSnapshot.getChildren()) { 
       System.out.println(alert.getValue()); 
      } 


     } 

このコードは、私がモデルクラスを作成し、ここでは、すべてのユーザーのからデータを取得し、マーカーをプロットしたい6430046874

のような1人のユーザーのデータのみが表示されます。

答えて

2

ステップ1)と同様のデータ型

ステップ2でDeviceLatest子ノード内にあるすべてのキーが含まれているPoJo.classを作るには)それがGpsLocationHistory-DeviceLatestあり、ここであなたのシナリオで所望の子ノードに移動します。だからここで2時間子供を取らなければなりません..子ノードのスペルを訂正してください

ステップ3)下記の方法を書き留めて呼び出します。

public void getAllUsersFromFirebase() { 
    DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference().child("GpsLocationHistory").child("DeviceLatest"); 
    UserRef.keepSynced(true); 
    UserRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator(); 
      List<PoJo> fcmUsers = new ArrayList<>(); 
      while (dataSnapshots.hasNext()) { 
       DataSnapshot dataSnapshotChild = dataSnapshots.next(); 
       PoJo fcmUser = dataSnapshotChild.getValue(PoJo.class); 
       fcmUsers.add(fcmUser); 

      } 

      // Check your arraylist size and pass to list view like 
      if(fcmUsers.size()>0) 
      { 
       fcmUsers arraylist pass to list view 
      }else 
      { 
       // Display dialog for there is no user available. 
      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
       // for handling database error   
     } 
    }); 
} 
+1

をしかし、私は、すべてのデバイスは、私がリスト – Ahmad

+0

からデータを取得するために何ができる地図 上のプロットマーカーについて個別に緯度と経度を取得したいです上記の方法では、すべてのデバイスの詳細は個別ではありませんので、すべてのキーでPoJo.classを作成してください。 – ashish

0

オブジェクト全体を反復処理していないため、1つしか表示されません。だから、このコードを使用してくださいこれを解決するために:おかげで、完璧な 作業

FirebaseDatabase database = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference myRef = database.child("GPSLocationHistory").child("DevicesLatest"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String deviceId = (String) ds.getKey(); 

      DatabaseReference deviceIdRef = database.child("GPSLocationHistory").child("DevicesLatest").child(deviceId); 
      ValueEventListener eventListener = new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        Double lati = (Double) dataSnapshot.child(lati).getValue(); 
        Double longi = (Double) dataSnapshot.child(longi).getValue(); 
        //and so on for the other values 
        //and do what you want with this values 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        throw databaseError.toException(); // don't ignore errors 
       } 
      }; 
      deviceIdRef.addListenerForSingleValueEvent(eventListener); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     throw databaseError.toException(); // don't ignore errors 
    } 
}; 
myRef.addListenerForSingleValueEvent(eventListener); 
関連する問題