2017-08-31 10 views
0

Firebaseデータベースからデータを取得してビューに表示しようとしています。このコードは、ArrayList内のデータがハコードされているときに正常に動作します。しかし、それはArrayListの中のデータがFirebase Database.Thisから取得したデータで満たされたときに、空のビューを表示することは、私がログに取得していますものです:ここではW/ClassMapper:classNameのcategoryNameのセッター/フィールドが見つかりません

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) { 

     } 
    }); } 

"productCategoryList" 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" 
} } } 

答えて

1

はアンドロイドスタジオのデフォルトのショートカットによってあなたのProductCategoryModelクラスのgetterとsetter(コンストラクタ)を生成し(ALT +挿入または右クリックして生成)手動で入力する際に​​いくつかの文字に間違いがあり、置き換えることができるため、置き換えることができます。

01など、いくつかのスマートな方法で

これは:あなたのモデルクラスに問題があるように思わ

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); 
     } 

、私はこれはあなたの問題を解決することを願っています。

関連する問題