2016-07-11 4 views
2

У меня есть некоторые трудности при обновлении объекта в ведро (ключ). В момент настойчивости I push() список объектов (в данном случае Trip) к узлу. Позже я получил его и сделаю обновление (в этом случае, обновив информацию о ставке), когда нажимается кнопка. Кажется, я не могу найти простой способ сделать это, если только когда я не отправил поездку раньше, мне пришлось вручную позвонить getkey(), а затем обновить автоматически сгенерированный uid самому объекту Trip. Любая идея сделать это легко? благодаряfirebase, как обновить данные с помощью ключа

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); 


       } 
      }); 
     } 
    }; 

ответ

4

Я не совсем уверен, что вы пытаетесь достичь (фрагмент соответствующей 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); 
     } 
    }); 
} 
0

The 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); 


       } 
      }); 
     } 
    }; 

 Смежные вопросы

  • Нет связанных вопросов^_^