如何在密钥下向特定Firebase子项添加数据?

时间:2017-03-28 02:23:40

标签: android firebase firebase-realtime-database android-recyclerview

我正在尝试将数据设置值添加到密钥下的特定数据库子项。这是我的代码:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Chat");




    public BlogViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
        textView_title = (TextView) itemView.findViewById(R.id.title);
        textView_decription = (TextView) itemView.findViewById(R.id.description);
        textView_address =(TextView) itemView.findViewById(R.id.address);
        textView_phone =(TextView) itemView.findViewById(phone);
        textView_Pickup =(TextView) itemView.findViewById(pickup);
        textView_Confirm =(TextView) itemView.findViewById(confirm);
        bconfirm = (Button) itemView.findViewById(R.id.bcomfirm);
        bpickup = (Button) itemView.findViewById(R.id.bpickup);


        bpickup.setOnClickListener(this);
        bconfirm.setOnClickListener(this);



    }
    //new
    @Override
    public void onClick(View v) {
        if (v.getId() == bpickup.getId()) {
            //set action



            reference.child("pickup").setValue("Confirmed time");

        }
    }

我觉得它需要在我的onClick之下,但我是新手。

2 个答案:

答案 0 :(得分:0)

简单演示。

你必须为firebase制作一个列表器来控制。

private void firebasedata() {
    String url = "https://xxxx-xxxxxx.firebaseio.com/xxxxx";
    new Firebase(url).addChildEventListener(
            new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    UrlString.add((String) dataSnapshot.child("pickup").getValue());
                    //do everything you want here

                    //for example:
                    // ImageLoader.getInstance().displayImage(UrlString.get(0), imageView, Picturebit.ImageUsing);
                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                    UrlString.add((String) dataSnapshot.child("pickup").getValue());
                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                }
            });
}

在你的情况下  尝试以下

reference = mFirebaseDatabaseReference.child("pickup");
reference.push().setValue(message);

看看这里。找到方法 updateChildren()

firebase.google.com/docs/database/android/read-and-write

答案 1 :(得分:0)

如果您想更新数据库中的特定记录,则需要先查询其密钥。获得密钥后,您可以通过以下方式进行更新:

firebaseReference.child("pickup").child("<Record Key").setValue(message)

您还可以尝试使用 updateChildren()方法,但如果您打算使用该方法,我建议您阅读此内容:https://firebase.google.com/docs/database/android/read-and-write