【问题标题】:Retrieve data from FireBase database in android, java by searchin with an ID通过使用 ID 搜索从 android、java 中的 FireBase 数据库中检索数据
【发布时间】:2021-01-03 10:33:50
【问题描述】:

我尝试在 java 中实现一个代码,通过使用 ID 搜索从数据库(firebase)中检索数据并将其显示在表单中。

在这里我已经保存了一些数据,现在当我输入 id 时,它需要以相同的形式显示 id 的数据。

btnShow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchID = txtid.getText().toString().trim();
            DatabaseReference readRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference dref = readRef.child("Student");
            Query query = dref.orderByChild("id").equalTo(searchID);
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.hasChildren()){
                        txtID.setText((dataSnapshot.child("id").getValue().toString()));
                        txtName.setText((dataSnapshot.child("name").getValue().toString()));
                        txtAdd.setText((dataSnapshot.child("address").getValue().toString()));
                        txtConNo.setText((dataSnapshot.child("conNo").getValue().toString()));
                    }
                    else
                        Toast.makeText(getApplicationContext(),"No Source to Display",Toast.LENGTH_SHORT).show();

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    });

这是我实现的 java 代码。但是当我运行程序并在数据库中提供正确的 id 时,它总是显示为“无源显示”(我的数据库中有数据并且保存功能正常工作)

我是 android studio 和 firebase 的初学者。请修改上面的代码并告诉我如何通过 ID 进行搜索。

谢谢。

【问题讨论】:

  • 添加你的数据库截图
  • 数据库已添加先生

标签: java android firebase android-studio firebase-realtime-database


【解决方案1】:

尝试以下方法:

if(dataSnapshot.exists()){
    for(DataSnapshot ds : dataSnapshot.getChildren()){
       txtID.setText((ds.child("id").getValue().toString()));
       txtName.setText((ds.child("name").getValue().toString()));
       txtAdd.setText((ds.child("address").getValue().toString()));
       txtConNo.setText((ds.child("conNo").getValue().toString()));
    }
}

您的参考位于节点Student,因此您需要循环然后使用ds 访问属性。另外,不要忘记检查onCancelled 中的错误:

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
    Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}

【讨论】:

  • 如何实现上述场景的更新和删除代码。请帮忙。
  • 您需要使用 updatechildren.. 请使用所需的详细信息提出其他问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
相关资源
最近更新 更多