3 回答
TA贡献1786条经验 获得超13个赞
要从DataSnapshot对象中获取最后一个位置,您可以使用以下代码行计算子项:
long count = dataSnapshot.getChildrenCount();
您的最后一项将位于:
int lastPosition = (int) count - 1;
如果要使用 for 循环,请使用以下代码:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<YourClass> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
YourClass yourClass = ds.getValue(YourClass.class);
list.add(yourClass);
}
YourClass lastItem = list.get(list.size() - 1);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);
通过这种方式,您可以从最后一个位置或任何其他位置获取项目。我曾经YourClass举过例子。您YourClass可以是 String 类或任何其他模型类
TA贡献1827条经验 获得超7个赞
如果您只想从数据库中获取Channel节点的最后一行,请尝试以下代码。
DatabaseReference databaseReference = Firebase.getInstance().getReference();
databaseReference.child(getUserDetails().getUserId()).child("channels").orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// here dataSnapshot is the value of last position.
@Override
public void onCancelled(DatabaseError databaseError) {
//Handle possible errors.
}
});
添加回答
举报