如何使用FirebaseUI查找引用项的名称?

时间:2017-12-29 22:47:07

标签: android firebase firebase-realtime-database firebaseui

您好我遇到了一些问题,我想更改键号来命名查看我的截图。我需要更改代码(01到名称),thankyou

我的截图:

i need change (01) to name (karomah)

我的代码:

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

1 个答案:

答案 0 :(得分:0)

使用Firebase时,建议您在观看后构建数据。 因此,如果您可以将Nama直接保存在Barang对象中,则会减少查询并显着提高应用程序的性能。

现在构建数据库的方式,要求您​​在填充RecyclerView时再次进行读取。您可以使用SingleValueListener:

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

现在请记住,名称可能会比其他数据晚几秒显示,因为它是从第二个侦听器读取的。