猿问

如何通过简单的 for 循环从 Firebase Android 获取所有子列表

下面的代码通过 forEach 循环给了我 Firebase 中的所有孩子:


final Query query = mDataBaseReference_info_channels.child(getUserDetails().getUserId()).child("channels");


query.addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

for (DataSnapshot dsp : dataSnapshot.getChildren()) {

DebugLog.d("\n test: " + dsp.toString());

}

}

但我想使用 for 循环并获取最后一个位置并再次触发查询。我不想像下面这样使用代码:


i=0;

for (DataSnapshot dsp : dataSnapshot.getChildren()) {

                        i++;

if(i==datasnapt.getchildren)

{

   //fire a api 

}

}

任何人都有解决方案,然后请给我答案。


吃鸡游戏
浏览 109回答 3
3回答

开满天机

要从DataSnapshot对象中获取最后一个位置,您可以使用以下代码行计算子项:long count = dataSnapshot.getChildrenCount();您的最后一项将位于:int lastPosition = (int) count - 1;如果要使用 for 循环,请使用以下代码:ValueEventListener valueEventListener = new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; List<YourClass> list = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; for(DataSnapshot ds : dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; YourClass yourClass = ds.getValue(YourClass.class);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list.add(yourClass);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; YourClass lastItem = list.get(list.size() - 1);&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(DatabaseError databaseError) {}};query.addListenerForSingleValueEvent(valueEventListener);通过这种方式,您可以从最后一个位置或任何其他位置获取项目。我曾经YourClass举过例子。您YourClass可以是 String 类或任何其他模型类

慕仙森

如果您只想从数据库中获取Channel节点的最后一行,请尝试以下代码。DatabaseReference databaseReference = Firebase.getInstance().getReference();databaseReference.child(getUserDetails().getUserId()).child("channels").orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; // here dataSnapshot is the value of last position.&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(DatabaseError databaseError) {&nbsp; &nbsp; &nbsp; &nbsp; //Handle possible errors.&nbsp; &nbsp; }});
随时随地看视频慕课网APP

相关分类

Java
我要回答