嗨,我是Firebase的新手。这就是我的数据的外观java - 使用Android/Java从嵌套对象Firebase中检索数据?-LMLPHP

我想知道如何从零售商处获取distributorInfo。我试图从FirebaseRecyclerAdapter的populateViewHolder方法中获取distributorInfo。我能够获取所选商品的密钥。如何在distributorInfo中获取信息?

 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的代码:-

公共类RetailerInfo {
    字符串ID,商店名称,地址,城市,邮政编码,区域,contactPerson,contactNumber,contact_person_email,location_master,类型,last_vist,last_visited_by,cityName,salesPersonName;
    HashMap distributorInfo;

    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/

10-09 06:07