java - 未定义的标签:firestore 内的 loop3
问题描述
当查询内部满足条件时,我想打破外部循环firestore
:
loopLebel:
for (int i = 10; i > 0; i++) {
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
loop1:
for (QueryDocumentSnapshot queryDocumentSnapshot : Objects.requireNonNull(task.getResult())) {
if (queryDocumentSnapshot.getString("Name").equals(list.get(finalI1).name)) {
HospitalData data = new HospitalData(list.get(finalI1).name, numberFormat.format(distanceKilometer), list.get(finalI1).rating.toString() + "/5.0", true, list.get(finalI1).latitude, list.get(finalI1).longitude);
hospitalDataList.add(data);
break loopLebel;
}
}
}
RecyclerView recyclerView = findViewById(R.id.recycler_view);
HospitalAdapter hospitalAdapter = new HospitalAdapter((ArrayList<HospitalData>) hospitalDataList, HospitalListActivity.this);
RecyclerView.LayoutManager manager = new LinearLayoutManager(HospitalListActivity.this);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(hospitalAdapter);
hospitalAdapter.notifyDataSetChanged();
}
});
}
该代码正在生成以下错误消息:
错误:未定义标签:loopLebel
在查询之外,loopLebel
标签被识别,但在查询内部,loopLebel
标签无法识别。
解决方案
当您在 内构造新OnCompleteListener<QuerySnapshot>
实例loop2
时,该onComplete(@NonNull Task<QuerySnapshot> task)
方法的当前实现将不再loop3
在范围内具有外部代码 ( ),这就是您看到undefined label: loop3
错误消息的原因。
要解决此问题,您可以采取以下步骤(根据需要进行调整以满足您的特定目标/要求):
删除
loop3
标签使用在其位置定义一个标志变量
引用内部的外部标志变量
OnCompleteListener<QuerySnapshot>
在内部范围内设置标志变量的值 (
loop1
)在外部范围 (
loop3
) 中添加标志检查并相应地中断:// Step 1 & Step 2: boolean loopThreeFlag = false; for (/* ... */) { //... query.get().addOnCompleteListener( new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { //... if (queryDocumentSnapshot.getString("Name") .equals(list.get(finalI1).name)) { //... // Step 3 & Step 4: OuterScopeClass.this.loopThreeFlag = true; } } } //... }); //Step 5: if (loopThreeFlag) { break; //no label required } }
推荐阅读
- arrays - 不使用路线的对象角度过滤器问题(Angular TS)
- rust - 不能在向量推送中借用“&”引用中的数据作为可变数据
- angular - Ionic 3 项目未通过抛出错误生成生产 apk
- javascript - 如何通过检查 React js 中的所有数据库值来设置按钮颜色?
- kdb - 根据标准在KDB中标记前N天的值?
- forms - Angular 7 FormControl将输入从数字转换为字符串
- python - 使用 pandas 合并数千个 csv 文件
- awk - 如果倒数第二个或倒数第二个字符是 CSV 第一列中的空格,则删除行
- c# - 添加光照处理后Shader不工作
- javascript - 当我在 chrome mobile 中向下滚动时,绝对定位的 DIV 会改变位置,如何解决这个问题?