我正在尝试从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);
}
您的模型类似乎有问题,我希望这可以解决您的问题。