java - 通过使用 android 应用扫描结果 id 检查产品 id(子 id)从 FirebaseRealtime-database 完全获取行数据
问题描述
我的应用带有条形码扫描仪,并且我为该应用创建了 Firebase 实时数据库。我在数据库中输入了一些数据。我想通过检查扫描结果到数据库中的 id(在特定行中)来连续获取所有数据(名称、详细信息、价格)。找到了一些类似于查询的教程,但我无法按照我的意愿设置代码。拜托,有人帮我做这个小修正吗?
下面我提到了我目前的工作代码。但它正在使用行唯一ID检查扫描结果并按照我想要的方式获取。但是很难输入与扫描结果相同的UID的数据。仅当我将数据直接动态添加到站点中的数据库时,此代码才有效。
第一张图片是工作当前代码:
secong pic 将通过检查其 id 来获取:
@Override
public void handleResult(Result result) {
final String scanResult = result.getText().toString();
setContentView(R.layout.activity_second);
databasefetch = FirebaseDatabase.getInstance().getReference().child("save").child(scanResult);
databasefetch.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
TextView text = (TextView) findViewById(R.id.textView3);
String name = dataSnapshot.child("name").getValue().toString();
String details = dataSnapshot.child("details").getValue().toString();
String price = dataSnapshot.child("price").getValue().toString();
text.setText("\nProduct Name : "+name+"\nDetails : "+details+"\nPrice : "+price);
//text to speech
String toSpeak=text.getText().toString();
//Toast.makeText(getApplicationContext(),toSpeak,Toast.LENGTH_SHORT).show();
txt.speak(toSpeak,TextToSpeech.QUEUE_FLUSH,null);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
解决方案
要根据其id
属性从第二个 JSON 片段中获取数据,您需要运行一个查询:
databasefetch = FirebaseDatabase.getInstance().getReference().child("save");
Query query = databasefetch.orderByChild("id").equalTo(8901058862836L);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
TextView text = (TextView) findViewById(R.id.textView3);
String name = snapshot.child("name").getValue(String.class);
String details = snapshot.child("details").getValue(String.class);
String price = snapshot.child("price").getValue(String.class);
...
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException(); // never ignore errors
}
})
推荐阅读
- angular - Angular - 重用组件上的数据绑定
- php - 如何修复 SQLSTATE[42000]:语法错误或访问冲突
- powerbi - 有什么方法可以将我的 mysql 查询转换为 power bi dax?
- node.js - 如何在 DialogFlow 实现 index.js 中创建包含行的表
- mysql - 我们如何链接 MySQL 中的行?
- python - HDF4 错误:不存在的数据集
- reactjs - JSX 中的循环产生一个包含数组的子元素。我想要多个孩子
- c++ - 像素值部分可读
- sql-server - 如何在 SQL Server 中查找/查看 tempdb
- c# - 在 mvc 中使用 2 get 控制器