我尝试从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(ECartHomeActivity.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) {
}
}); }
如果&#34; productCategoryList&#34;它会在视图中显示数据。 ArrayList是硬编码的。 但是,如果此ArrayList填充了从Database中检索的数据,则不会显示任何数据。
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"
} } }
答案 0 :(得分:1)
通过android studio的默认快捷方式(alt + insert或右键单击并生成)生成ProductCategoryModel类的getter和setter(以及构造函数),因为手动键入时某些字母可能存在错误,您可以替换
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);
}
您的模型类似乎存在问题,我希望这可以解决您的问题。