2017-08-03 26 views
1

我已存储的ArrayList在火力DB从ArrayList中特定的记录,有没有办法从ArrayList如何获得存储在fireabase

目前收到使用特定的ID(MEMBERID)火力特定的记录,我能得到tripMemberList ArrayList,但我想用memberId

我不想检索全ArrayList的只需要从tripMemberList使用memberId

我附加火力DB STRU单个记录摆脱ArrayList的特定记录cture下面 enter image description here

编辑:我如何添加一条记录到火力

TripChatDTO tripChatDTO = new TripChatDTO(); 
tripChatDTO.setTripId(jsonObject.getInt("travelId")); 
tripChatDTO.setTripName(travelDTO.getTitle()); 
tripChatDTO.setTripPicUrl(jsonObject.getString("image")); 
List<TripMemberDTO> memberDTOList = new ArrayList<>(); 
for (int i = 0; i < invitedFriendArray.length(); i++) { 
    JSONObject jsonObject1 = invitedFriendArray.getJSONObject(i); 
    TripMemberDTO dto = new TripMemberDTO(); 
    dto.setMemberId(jsonObject1.getInt("id")); 
    dto.setAdmin(false); 
    dto.setNotification(true); 
    memberDTOList.add(dto); 
} 
// Add Admin record 
TripMemberDTO tripMemberDTO = new TripMemberDTO(); 
tripMemberDTO.setMemberId(loggedInUser.getId()); 
tripMemberDTO.setAdmin(true); 
tripMemberDTO.setNotification(true); 
memberDTOList.add(tripMemberDTO); 
// Add all Member record to travel 
tripChatDTO.setTripMemberList(memberDTOList); 

String channelName = "Trip-" + tripChatDTO.getTripId(); 
// Create tip 
FirebaseDatabase.getInstance().getReference().child(TRIP).child(channelName).setValue(tripChatDTO); 
+0

你已经有一个ArrayList的孩子然后循环来查找记录。为什么你需要Firebase的请求? –

+0

@ cricket_007 storeand获得记录这两个类都是不同的 – akhilesh0707

回答

1

它可能是在列表的任意位置我想用`MEMBERID

过顶元素

tripMemberRef rootRef = FirebaseDatabase.getInstance().getReference() 
    .child("Trips/Trip-190/tripMemberList"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot c : dataSnapshot.getChildren()) { 
      String memberId = c.child("memberId").getValue(String.class); 
      Log.d("TAG", memberId); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
ref.addListenerForSingleValueEvent(eventListener); 
+0

我不想获得完整列表并循环播放,因为未来我的列表中会获得1000条记录 – akhilesh0707

+0

Firebase通过快照返回整个列表。这只是一个例子。请自行修改以适应您的需求 –

+0

感谢您的帮助,我可以使用查询获取特定记录 – akhilesh0707

1

假设Trips是火力地堡根的直接子,请使用此代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference ref = rootRef.child("Trips").child("Trip-190").child("tripMemberList").child("0"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String memberId = dataSnapshot.child("memberId").getValue(String.class); 
     Log.d("TAG", memberId); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
ref.addListenerForSingleValueEvent(eventListener); 

但请记住,Firebase是一个NoSQL数据库,它被组织为关键和值对。这意味着Firebase数据库中的每个对象都是Map而不是ArrayList

+0

感谢您的答案,我不知道记录的索引'.child(“0”);'它可能在列表中的任何位置我想查找记录使用'MEMBERID“ – akhilesh0707

+0

@AkhileshPatil这不是一个指标,这是一个关键 –

+0

@ cricket_007我已经存储了一个列表,我不知道密钥,在那个特定的列表中,只有我有'memberId' – akhilesh0707

相关问题