从按钮点击检索Firebase数据库中的数据 [英] Retrieve data from firebase database on button click

查看:150
本文介绍了从按钮点击检索Firebase数据库中的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个应用程序,允许用户通过将数据上传到Firebase托管的数据库来进行协作。我可以写数据没有问题,但它只是想让我检索数据时,触发事件,如数据被改变。我想要的是检索一个字符串,我已经保存到数据库,并将其设置为我的网页上的TextView元素的文本值,我希望这发生,当我点击一个按钮。

以下是用户写入数据页面的代码:

<$ p $

p> addButton.setOnClickListener(new View.OnClickListener(){
@Override $ b $ public void onClick(View v){
DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance()。getReference();

字符串dbLocationTag = location.getText()。toString();
字符串itemInfo =Item Description:+ itemDescription.getText()。 toString()+\\\
+Job Number:+ jobNumber.getText()。toString();

mDatabase.setValue(dbLocationTag,itemInfo);

Context context = getApplicationContext();
final Intent inventoryHomeScreen = new Intent();
inventoryHomeScreen.setClass(context,Inventory_Management.class);
startActivity(inventoryHomeScreen);
}
});

以下是我希望能够检索数据的地方:

  @Override 
保护无效的onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inventory__view__item);

final TextView itemInfo =(TextView)findViewById(R.id.itemInfoTextView);

final Button viewButton =(Button)findViewById(R.id.viewButton);
assert viewButton!= null;
viewButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){

//我想设置文本的itemInfo到我刚写的

}
});


解决方案

您需要使用 addListenerForSingleValueEvent()检索数据

$ $ $ $ $ $ DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance()。getReference();
mDatabase.child(< childName>)。addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){

}

@Override
public void onCancelled(DatabaseError databaseError){
$ b}
});

小孩中,您需要提及您子节点名称



如果您想要更改整个数据库,只需删除 child ,使其看起来像 mDatabase.addListenerForSingleValueEvent()


I'm writing an app that allows users to collaborate on inventory by uploading data to a database hosted by firebase. I can write data to it no problem, however it only wants to let me retrieve data when an event is triggered, such as the data being changed. All I want is to retrieve a string that I've saved to the database and set it as the text value of a TextView element on my page, and I want this to happen when I click a button. How do I do this?

Here's the code for the page where the user writes the data:

addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatabaseReference mDatabase;
            mDatabase = FirebaseDatabase.getInstance().getReference();

            String dbLocationTag = location.getText().toString();
            String itemInfo = "Item Description: " + itemDescription.getText().toString() + "\n" + "Job Number: " + jobNumber.getText().toString();

            mDatabase.setValue(dbLocationTag, itemInfo);

            Context context = getApplicationContext();
            final Intent inventoryHomeScreen = new Intent();
            inventoryHomeScreen.setClass(context, Inventory_Management.class);
            startActivity(inventoryHomeScreen);
        }
    });

Here's where I would like to be able to retrieve the data:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_inventory__view__item);

    final TextView itemInfo = (TextView) findViewById(R.id.itemInfoTextView);

    final Button viewButton = (Button) findViewById(R.id.viewButton);
    assert viewButton != null;
    viewButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //I would like to set the text of itemInfo to the data I just wrote

        }
    });
}

解决方案

You need to use addListenerForSingleValueEvent() to retrieve data

DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("<childName>").addListenerForSingleValueEvent(new ValueEventListener(){
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
});

Here in child you need to mention your child node name

If you want to get change of whole database, simply remove child so it look like mDatabase.addListenerForSingleValueEvent()

这篇关于从按钮点击检索Firebase数据库中的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆