0

Hello I'm got some problem, i want to change key number to name look at my screenshot. i need code for change (01 to name), thankyou

my screenshot :

i need change (01) to name (karomah)

my 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;
                }
            });
        }
    };
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • You'll need to use a listener to join the data from the other list, as shown here: https://stackoverflow.com/questions/46923989/android-firebase-ui-get-data-from-other-table – Frank van Puffelen Dec 29 '17 at 23:24

1 Answers1

0

When using Firebase it's recommended to structure your data after your view. So if you can save the Nama directly in your Barang object, it would reduce queries and significantly improve your app's performance.

The way your database is structured right now, requires you to make another read when populating the RecyclerView. You can use a SingleValueListener for that:

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

Now keep in mind that the name might show up a few seconds later than the other data, because it is being read from a second listener.