Android 如何从fireabase中存储的ArrayList中获取特定记录
我已将ArrayList存储在firebase DB中,是否有任何方法可以使用Android 如何从fireabase中存储的ArrayList中获取特定记录,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我已将ArrayList存储在firebase DB中,是否有任何方法可以使用ArrayList 目前,我可以获取tripMemberListArrayList,但我想使用memberId 我不想检索完整的ArrayList,只需要使用memberId从tripMemberList中检索一条记录即可 我在下面连接一个firebase DB结构 编辑:如何向firebase添加记录 TripChatDTO tripChatDTO = new TripChatDTO(); tripChatDTO.
ArrayList
目前,我可以获取tripMemberListArrayList
,但我想使用memberId
我不想检索完整的ArrayList,只需要使用memberId
从tripMemberList
中检索一条记录即可
我在下面连接一个firebase DB结构
编辑:如何向firebase添加记录
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);
TripChatDTO TripChatDTO=新TripChatDTO();
tripChatDTO.setTripId(jsonObject.getInt(“travelId”);
setTripName(travelDTO.getTitle());
setTripPicUrl(jsonObject.getString(“图像”));
List memberDTOList=new ArrayList();
for(int i=0;i
假设Trips
是Firebase根目录的直接子目录,请使用以下代码:
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数据库中的每个对象都是映射
,而不是阵列列表
它可能在列表中的任何位置,我想使用'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);
谢谢你的回答,我不知道记录的索引
.child(“0”)代码>它可能在列表中的任何位置。我想使用'memberId'@AkhileshPatil查找一条记录,它不是索引,而是key@cricket_007我存储了一个列表,但我不知道该列表的键,在该特定列表中,只有memberId
@AkhileshPatil我们无法看到您如何将代码添加到tripMemberList
,但我的观点是,看看Firebase的结构。是0..5,这是孩子们的钥匙。number值只是一个数字,实际上并不是到element@cricket_007只要一分钟,我会更新我如何添加列表的代码您已经有了Arraylist。为什么需要Firebase的请求?@cricket\u 007 store和get record这两个类都是延迟的。我不想获取完整的列表并循环它,因为将来我的列表get 1000 recordFirebase会通过快照返回整个列表。这只是一个例子。请自行修改以满足您的需要谢谢您的帮助,我可以通过查询获得具体记录