簡體   English   中英

firebase,如何在一鍵更新數據

[英]firebase, how to update data at a key

我在更新存儲桶(鍵)上的對象時遇到一些困難。 在持久性時,我push()對象列表(在本例中為Trip) push()到節點。 后來,我檢索了它,並在單擊按鈕時進行了更新(在這種情況下,是更新出價信息)。 我似乎找不到一個簡單的方法來執行此操作,除非之前進行過行程,否則必須手動調用getkey() ,然后將自動生成的uid更新為對象Trip本身。 有什么想法可以輕松完成嗎? 謝謝

mFirebaseAdapter = new FirebaseRecyclerAdapter<Trip,
            TripViewHolder>(
            Trip.class,
            R.layout.item_message,
            TripViewHolder.class,
            mFirebaseDatabaseReference.child(CHILD_TRIPS)) {

        @Override
        protected void populateViewHolder(TripViewHolder viewHolder, final Trip model, int position) {

            viewHolder.btnTakeNow.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {

                     Bid bidAtReserved = new Bid(mDriverCarInfo, model, MY_PRICE);

                     mFirebaseDatabaseReference.child(CHILD_TRIPS)
                             //here, I want to update the bidding to this trip, but 
                             //I can't get the uid of the trip, unless I had 
                             //manually recorded at the time of pushing the trip
                             .child(model.getUid()) 
                              .child("bids").push().setValue(bidAtReserved);


                 }
            });
        }
    };

我不確定自己要完成什么(相關JSON的摘要-作為文本,而不是屏幕截圖-會有所幫助)。 但是我最好的猜測是您正在尋找getRef()

protected void populateViewHolder(TripViewHolder viewHolder, final Trip model, final int position) {
    viewHolder.btnTakeNow.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            mFirebaseAdapter.getRef(position).child("price").setValue(MY_PRICE);
        }
    });
}

FirebaseRecylerAdapter具有一個名為parseSnapShot的替代,您可以像這樣掛鈎。 我沒有更好的解決方案-希望有人可以提供更好的解決方案。

mFirebaseAdapter = new FirebaseRecyclerAdapter<Trip,
                TripViewHolder>(
                Trip.class,
                R.layout.item_message,
                TripViewHolder.class,
                mFirebaseDatabaseReference.child(CHILD_TRIPS)) {

        @Override
        protected Trip parseSnapshot(DataSnapshot snapshot) {

            Trip trip = super.parseSnapshot(snapshot);
            trip.setDbKey(snapshot.getKey());

            return trip;
        }

        @Override
        protected void populateViewHolder(TripViewHolder viewHolder, final Trip model, int position) {

            viewHolder.btnTakeNow.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {

                     Bid bidAtReserved = new Bid(mDriverCarInfo, model, MY_PRICE);

                     mFirebaseDatabaseReference.child(CHILD_TRIPS)
                             //here, I want to update the bidding to this trip, but I can't get the uid of the trip, unless I had manually recorded at the time of pushing the trip
                             .child(model.getUid()) 
                              .child("bids").push().setValue(bidAtReserved);


                 }
            });
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM