java - 使用 Android/Java 从嵌套对象 Firebase 检索数据?

标签 java android firebase firebase-realtime-database nosql

您好,我是 Firebase 的新手。我的数据如下 enter image description here

我想知道如何从零售商处检索经销商信息。我正在尝试从 FirebaseRecyclerAdapter 的 populateViewHolder 方法检索经销商信息。我能够获取所选项目的 key 。如何获取经销商信息内的信息?

 private void getRetailers() {
        FirebaseRecyclerAdapter<RetailerInfo,RetailerViewHolder> adapter = new FirebaseRecyclerAdapter<RetailerInfo, RetailerViewHolder>(
                RetailerInfo.class,
                R.layout.distributor_row,
                RetailerViewHolder.class,
                mDatabase
        ) {
            @Override
            protected void populateViewHolder(RetailerViewHolder viewHolder, final RetailerInfo model, final int position) {

                viewHolder.setAddress(model.getContactPerson());
                viewHolder.setArea(model.getContactNumber());
                viewHolder.setShopName(model.getShopName());
                viewHolder.setZipcode(model.getZipcode());
                viewHolder.setCity(model.getCity());


                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

//                        DatabaseReference ref = getRef(position);
//                        String key=   ref.getKey();
//                        Toast.makeText(Distributors.this, key, Toast.LENGTH_SHORT).show();


                        ValueEventListener valueEventListener = new ValueEventListener() {

                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                RetailerInfo retailerInfo = dataSnapshot.getValue(RetailerInfo.class);


                                Iterator it = retailerInfo.getDistributorInfo().entrySet().iterator();
                                while (it.hasNext()) {
                                    Map.Entry pair = (Map.Entry)it.next();
                                    Log.d("TAG","distributorInfo: "+pair.getKey() +  " = "  + pair.getValue());
                                    it.remove(); // avoids a ConcurrentModificationException
                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        };


                        mDatabase.addListenerForSingleValueEvent(valueEventListener);

                    }
                });
            }
        };

        recyclerView.setAdapter(adapter);
    }

RetailerInfo 代码:-

公共(public)类RetailerInfo { String id, shopName,address,city,zipcode,area, contactPerson, contactNumber,contact_person_email,location_master,type,last_vist,last_visited_by,cityName,salesPersonName; HashMap distributionInfo;

    public RetailerInfo() {
    }

    public RetailerInfo(String id, String shopName, String address, String city, String zipcode, String area, String contactPerson, String contactNumber, String contact_person_email, String location_master, String type, String last_vist, String last_visited_by, String cityName, String salesPersonName, HashMap<String, String> distributorInfo) {
        this.id = id;
        this.shopName = shopName;
        this.address = address;
        this.city = city;
        this.zipcode = zipcode;
        this.area = area;
        this.contactPerson = contactPerson;
        this.contactNumber = contactNumber;
        this.contact_person_email = contact_person_email;
        this.location_master = location_master;
        this.type = type;
        this.last_vist = last_vist;
        this.last_visited_by = last_visited_by;
        this.cityName = cityName;
        this.salesPersonName = salesPersonName;
        this.distributorInfo = distributorInfo;
    }

    public HashMap<String, String> getDistributorInfo() {
        return distributorInfo;
    }

    public String getId() {
        return id;
    }

    public String getShopName() {
        return shopName;
    }

    public String getAddress() {
        return address;
    }

    public String getCity() {
        return city;
    }

    public String getZipcode() {
        return zipcode;
    }

    public String getArea() {
        return area;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public String getContactNumber() {
        return contactNumber;
    }

    public String getContact_person_email() {
        return contact_person_email;
    }

    public String getLocation_master() {
        return location_master;
    }

    public String getType() {
        return type;
    }

    public String getLast_vist() {
        return last_vist;
    }

    public String getLast_visited_by() {
        return last_visited_by;
    }

    public String getCityName() {
        return cityName;
    }

    public String getSalesPersonName() {
        return salesPersonName;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public void setContactNumber(String contactNumber) {
        this.contactNumber = contactNumber;
    }

    public void setContact_person_email(String contact_person_email) {
        this.contact_person_email = contact_person_email;
    }

    public void setLocation_master(String location_master) {
        this.location_master = location_master;
    }

    public void setType(String type) {
        this.type = type;
    }

    public void setLast_vist(String last_vist) {
        this.last_vist = last_vist;
    }

    public void setLast_visited_by(String last_visited_by) {
        this.last_visited_by = last_visited_by;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public void setSalesPersonName(String salesPersonName) {
        this.salesPersonName = salesPersonName;
    }
}

感谢任何帮助或建议。谢谢。

最佳答案

例如,您也可以嵌套对象:

public class Retailer{
    String Address, area, city, contactNumber, contactPerson, shopName, zipCode;
    DistributorInfo distributorInfo;

    public Retailer(...){
        // Contructor
    }
    // Getter and setters
}

public class DistributorInfo {
    // all fields, constructor, getter and setters
}

用法:

Retailer retailerInfo = dataSnapshot.getValue(Retailer.class);

关于java - 使用 Android/Java 从嵌套对象 Firebase 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46314380/

相关文章:

java - 使用 Java 在 Google Analytics 上进行分页

java - 我们如何在没有第三个变量和算术运算符的情况下交换两个数字?

java - 如何在 LWJGL 中在 3D 上渲染具有透明度的 2D 纹理

Android App自动退出/超时功能

java - 在 recyclerview 中加载选取的联系人

android - 使用一个 admob 帐户和两个 google play 帐户?

Android - 如何以编程方式检查当前是否启用了 Firebase Analytics?

java - 在jsp页面上获取ArrayList Size

c# - Unity 2020 和 Firebase 上的问题(无法解析引用 'UnityEditor.iOS.Extensions.Xcode')

json - 尝试使用Firebase来获取我的flutter应用程序的获取请求并出现错误