为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不更改数据的情况下从 firebase 检索数据?

如何在不更改数据的情况下从 firebase 检索数据?

FFIVE 2022-07-14 17:26:41
// 这是 MainActivity,我使用 firebase 存储示例数据,我可以在其中更新和检索。但是只有在数据发生变化时才能检索数据,但我想看看我已经在firebase 中的数据这里是数据库结构] 1public class MainActivity extends  AppCompatActivity {EditText name,weight;Button uploadBtn;TextView itemName,itemWeight;DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();Map<String,String>values=new HashMap<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    name=findViewById(R.id.inputItemName);    weight=findViewById(R.id.inputItemWeight);    uploadBtn=findViewById(R.id.uploadButton);    itemName=findViewById(R.id.resultName);    itemWeight=findViewById(R.id.resultWeight);// 这里你可以看到我在上传新值之前使用了一个 ValueEventListener 来显示从数据库中检索的值但是它不起作用,除非数据的值被改变(也就是说它只有在上传新值之后才起作用)。 ValueEventListener valueEventListener=new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            String nameD=(String) dataSnapshot.child("Name").getValue();            String weightD = (String) dataSnapshot.child("Weight").getValue();            itemName.setText(nameD);            itemWeight.setText(weightD+" Kg");        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        }    };    databaseReference.addListenerForSingleValueEvent(valueEventListener);    uploadBtn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            values.put("Name",name.getText().toString());            values.put("Weight",weight.getText().toString());            databaseReference.child("UToouch").setValue(values);        } 
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

为了能够获取您Name和Weight属性的值,请使用以下代码:


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

DatabaseReference ref = rootRef.child("UToouch");

ValueEventListener valueEventListener = new ValueEventListener() {

    @Override

    public void onDataChange(DataSnapshot dataSnapshot) {

        String name = dataSnapshot.child("Name").getValue(String.class);

        String weight = dataSnapshot.child("Weight").getValue(String.class);

        Log.d(TAG, name + " / " + weight);

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {

        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!

    }

};

ref.addListenerForSingleValueEvent(valueEventListener);

您的 logcat 中的输出将是:


rittesh / pv


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信