w/classmapper:在类上找到类别名称的setter/fielt



我正在尝试从Firebase数据库中检索数据并在视图中显示。当对ArrayList中的数据进行硬编码时,该代码正常工作。但是,当Arraylist中的数据中充满了从Firebase数据库中检索到的数据时,它显示空视图。这就是我在日志中得到的:

W/ClassMapper: No setter/field for categoryName found on class
W/ClassMapper: No setter/field for categoryImageUrl found on class
and so on..

这是mainActivity.java(ecarthomectivity.java):(用于获取数据)

public class ECartHomeActivity extends AppCompatActivity {
    public static final String DATABASE_PATH_UPLOADS = "ProductCategoryModel";
    // firebase objects
    DatabaseReference databaseMessages;
    ArrayList<ProductCategoryModel> productCategoryList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ecart);
        productCategoryList = new ArrayList<ProductCategoryModel>();
        databaseMessages = FirebaseDatabase.getInstance().getReference(DATABASE_PATH_UPLOADS);
        databaseMessages.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                productCategoryList.clear();
                for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()){
                    // iterates through all the messages
                    ProductCategoryModel message = messageSnapshot.getValue(ProductCategoryModel.class);
                    ProductCategoryModel fire = new ProductCategoryModel();
                    String categoryName = message.getProductCategoryName();
                    String categoryDescription = message.getProductCategoryDescription();
                    String categoryDiscount = message.getProductCategoryDiscount();
                    String categoryImageUrl = message.getProductCategoryImageUrl();
                    fire.setProductCategoryName(categoryName);
                    fire.setProductCategoryDescription(categoryDescription);
                    fire.setProductCategoryDiscount(categoryDiscount);
                    fire.setProductCategoryImageUrl(categoryImageUrl);
                    productCategoryList.add(fire);
                }
                CenterRepository.getCenterRepository().setListOfCategory(productCategoryList);
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }

如果" productCategoryList" arraylist进行了硬编码,则显示视图中的数据。但是,如果此数组列表中充满了从数据库中检索到的数据,则不会显示任何数据。

productcategorymodel.java

public class ProductCategoryModel {
    public ProductCategoryModel(){
    }
    private String categoryName;
    private String categoryDescription;
    private String categoryDiscount;
    private String categoryImageUrl;
    /**
    * @param productCategoryName
    * @param productCategoryDescription
    * @param productCategoryDiscount
    * @param productCategoryUrl
    */
    public ProductCategoryModel(String productCategoryName, String productCategoryDescription,
    String productCategoryDiscount, String productCategoryUrl) {
        super();
        this.categoryName = productCategoryName;
        this.categoryDescription = productCategoryDescription;
        this.categoryDiscount = productCategoryDiscount;
        this.categoryImageUrl = productCategoryUrl;
    }
    /**
    * @return the idproductcategory
    */
    public String getProductCategoryName() {
        return categoryName;
    }
    /**
    * @param categoryName
    *            the idproductcategory to set
    */
    public void setProductCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
    /**
    * @return the productDescription
    */
    public String getProductCategoryDescription() {
        return categoryDescription;
    }
    /**
    * @param categoryDescription
    *            the productDescription to set
    */
    public void setProductCategoryDescription(String categoryDescription) {
        this.categoryDescription = categoryDescription;
    }
    /**
    * @return the productDiscount
    */
    public String getProductCategoryDiscount() {
        return categoryDiscount;
    }
    /**
    * @param categoryDiscount
    *            the productDiscount to set
    */
    public void setProductCategoryDiscount(String categoryDiscount) {
        this.categoryDiscount = categoryDiscount;
    }
    /**
    * @return the productUrl
    */
    public String getProductCategoryImageUrl() {
        return categoryImageUrl;
    }
    /**
    * @param categoryImageUrl
    *            the productUrl to set
    */
    public void setProductCategoryImageUrl(String categoryImageUrl) {
        this.categoryImageUrl = categoryImageUrl;
    }
}

这是JSON代码:

{
    "ProductCategoryModel" : {
        "1" : {
            "categoryName" : "anonymous",
            "categoryDescription" : "Heyyyy",
            "categoryDiscount" : "anonymous",
            "categoryImageUrl" : "anonymous"
        }
        ,
        "2" : {
            "categoryName" : "anonymous",
            "categoryDescription" : "Heyyyy",
            "categoryDiscount" : "anonymous",
            "categoryImageUrl" : "anonymous"
        }
        ,
        "3" : {
            "categoryName" : "anonymous",
            "categoryDescription" : "Heyyyy",
            "categoryDiscount" : "anonymous",
            "categoryImageUrl" : "anonymous"
        }
    }
}

生成Android Studio的productCategoryModel类的Getter和setter(以及构造函数),由Android Studio的默认快捷方式(Alt Insert或右键单击和生成),因为在手动键入某些字母时可能会出现错误您可以替换

for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()){  // iterates through all the messages
            ProductCategoryModel message = messageSnapshot.getValue(ProductCategoryModel.class);
            ProductCategoryModel fire = new ProductCategoryModel();
            String categoryName = message.getProductCategoryName();
            String categoryDescription = message.getProductCategoryDescription();
            String categoryDiscount = message.getProductCategoryDiscount();
            String categoryImageUrl = message.getProductCategoryImageUrl();
            fire.setProductCategoryName(categoryName);
            fire.setProductCategoryDescription(categoryDescription);
            fire.setProductCategoryDiscount(categoryDiscount);
            fire.setProductCategoryImageUrl(categoryImageUrl);
            productCategoryList.add(fire);
        }

以某种智能方式为:

for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()){  // iterates through all the messages
            String categoryName = message.getProductCategoryName();
            String categoryDescription = message.getProductCategoryDescription();
            String categoryDiscount = message.getProductCategoryDiscount();
            String categoryImageUrl = message.getProductCategoryImageUrl();
            ProductCategoryModel fire = new ProductCategoryModel(categoryName,categoryDescription,categoryDiscount,categoryImageUrl);
            productCategoryList.add(fire);
        }

您的模型类似乎有问题,我希望这可以解决您的问题。

最新更新