2017-12-29 8 views
0

Hallo Ich habe ein Problem, ich möchte ändern Schlüsselnummer zu Namen Blick auf meinen Screenshot. Ich brauche Code für den Wandel (01 bis Name), thankyouWie man den Namen eines referenzierten Artikels mit FirebaseUI nachschlägt?

mein Screenshot:

i need change (01) to name (karomah)

mein Code:

private void loadListBarang(String tokoId) { 
    adapter = new FirebaseRecyclerAdapter<Barang, BarangViewHolder>(Barang.class, 
      R.layout.barang_item, 
      BarangViewHolder.class, 
      barangList.orderByChild("TokoId").equalTo(tokoId)) { 
     @Override 
     protected void populateViewHolder(BarangViewHolder viewHolder, Barang model, int position) { 

      viewHolder.barang_nama.setText(model.getNama()); 
      viewHolder.barang_harga.setText(model.getHarga()); 
      viewHolder.barang_satuan.setText(model.getSatuan()); 
      viewHolder.toko_id.setText(model.getTokoId()); 

      final Barang local = model; 
      viewHolder.setItemClickListener(new ItemClickListener() { 
       @Override 
       public void onClick(View view, int position, boolean isLongClick) { 
        return; 
       } 
      }); 
     } 
    }; 
+0

Sie benötigen einen Zuhörer verwenden, um die Daten aus der anderen Liste zu verbinden, wie hier gezeigt: https://stackoverflow.com/questions/46923989/android-firebase-ui-get-data-from-other- Tabelle –

Antwort

0

Wenn Firebase verwendet wird empfohlen, zu Struktur der Daten nach Ihrer Ansicht. Wenn Sie also die Nama direkt in Ihrem Barang-Objekt speichern können, würde dies die Anzahl der Abfragen verringern und die Leistung Ihrer App erheblich verbessern.

Die Art und Weise Ihre Datenbank jetzt strukturiert ist, erfordert, dass Sie eine andere Lese zu machen, wenn die RecyclerView bevölkern. Sie können eine SingleValueListener dafür verwenden:

private void loadListBarang(String tokoId) { 
    adapter = new FirebaseRecyclerAdapter<Barang, BarangViewHolder>(Barang.class, 
      R.layout.barang_item, 
      BarangViewHolder.class, 
      barangList.orderByChild("TokoId").equalTo(tokoId)) { 
     @Override 
     protected void populateViewHolder(BarangViewHolder viewHolder, Barang model, int position) { 

      viewHolder.barang_nama.setText(model.getNama()); 
      viewHolder.barang_harga.setText(model.getHarga()); 
      viewHolder.barang_satuan.setText(model.getSatuan()); 
      tokoList.child(model.getTokoId()).child("Nama") 
         .addListenerForSingleValueEvent(new ValueEventListener { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           String tokoNama = dataSnapshot.getValue(String.class); 
           viewHolder.toko_id.setText(tokoNama); 
          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

      final Barang local = model; 
      viewHolder.setItemClickListener(new ItemClickListener() { 
       @Override 
       public void onClick(View view, int position, boolean isLongClick) { 
        return; 
       } 
      }); 
     } 
    }; 

Jetzt denken Sie daran, dass der Name ein paar Sekunden später als die anderen Daten auftauchen könnte, weil es von einem zweiten Hörer gelesen wird.

Verwandte Themen