android - 使用带有数据快照的 for 循环,无法获得我想要的值
问题描述
我想在图片中获得价值,
DatabaseReference GetDestination_Order = FirebaseDatabase.getInstance().getReference("results").child(x).child("destination_order");
GetDestination_Order.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
destination_order.clear();
for (DataSnapshot Snapshot : dataSnapshot.getChildren()) {
int data = Snapshot.getValue(Integer.class);
String im_or = String.valueOf(data);
destination_order.add(im_or);
}
pass_Destination_order(destination_order);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
我可以像 destination_order: [81, 95, 93, 96, 2] 获得 destination_order: [0, 1, 2, 3, 4, 5, 6]
public void pass_Destination_order(final ArrayList<String> destination_order) {
for (int n = 0; n < destination_order.size(); n++) {
String x = destination_order.get(n);
DatabaseReference myRef1 = FirebaseDatabase.getInstance("---firebaseurl---").getReference("travel").child("0").child("result").child(x).child("picture");
Log.e("url-x", x);
ValueEventListener valueEventListener = myRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
murl="";
datatest = dataSnapshot.getValue(String.class);
Log.e("url", String.valueOf(datatest));
if (count == 0) {
murl += datatest;
getImages(murl);`enter code here`
}
if(count==destination_order.size()-1){
count=0;}
else
count++;
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
我希望得到按 [81, 95, 93, 96, 2] 排序的图片 url,但是我得到的 myurl 被弄乱了。为什么第一个 myurl 不属于 81?输出/日志如下。
解决方案
要在节点中获取所有这些数字destination_order
,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("results").child(x).child("destination_order");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
int number = ds.getValue(Integer.class);
Log.d("TAG", number + ", ");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
推荐阅读
- javascript - 在 NodeJS (Express) 中使用 Promise.all 找不到集合时出现 404 页面
- spacy - 使用 ELMo/BERT 进行预训练的参考文本
- php - 我想将我的提交数据显示到输入表单中
- heroku - Heroku php buildpack 在 IBM Cloud Foundry 上运行缓慢
- c - 在这种情况下 [i] 变量的含义是什么?
- django - 'if' 语句中的多个 django 'with' 语句
- python-3.x - Pandas:基于多列对数据框进行排序
- java - ConstraintLayout 奇怪的约束线
- javascript - 如何找到此数组或字符串形式的最早时间?
- c# - 如何使用遥测服务来修改 Appinsight 的用户 ID?