Priya singh
Priya singh

Reputation: 87

W/ClassMapper: No setter/field for "class" found on class in android

I am trying to retrieve data from firebase database and displaying them on my listview. My app works fine on the android versions lower than 7.0 whereas in version 7.0 nothing is displayed in listview. This is what I'm getting in logs:

W/ClassMapper: No setter/field for ExpenseTag found on class com.example.siddhi.ExpenseManager.Data.Expense

here BarActivity.class:

BarAdapter m_adapter = new BarAdapter(ListBarActivity.this, R.layout.bar_layout, tagsArrayList);

            // display the list.
            listView.setAdapter(m_adapter);

Here Expense.class

package com.example.siddhi.ExpenseManager.Data;


public class Expense {
          public String expenseId;
          public String expenseName;


    public Expense() {
         /*Blank default constructor essential for Firebase*/
    }

    public Expense( String expenseId, String expenseName, ) {

                           this.expenseName = expenseName;
                                this.expenseId = expenseId;

               }


    //Getters and setters
    public void setExpenseName(String expenseName) {
        this.expenseName = expenseName;
    }


    public void setExpenseId(String expenseId) {
        this.expenseId = expenseId;
    }

       public String getExpenseName() {
        return expenseName;
    }


    public String getExpenseId() {
        return expenseId;
    }


    @Exclude
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<>();
       result.put("expenseName", expenseName);
       result.put("expenseId", expenseId);
        return result;
    }
}

here other EXpenseTag.Class:

 package com.example.siddhi.ExpenseManager.Data;



public class ExpenseTag {

    public String tagId;
    public String tagName;


    public ExpenseTag() {

         /*Blank default constructor essential for FireBase*/
    }


    public ExpenseTag( String tagId, String tagName) {
        this.tagId = tagId;
        this.tagName = tagName;

    }
    //Getters and setters
    public void setTagId(String tagId) {
        this.tagId = tagId;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }
    public String getTagId() {
        return tagId;
    }
    public String getTagName() {
        return tagName;
    }

    @Exclude
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<>();
        result.put("tagId", tagId);
        result.put("tagName", tagName);
        return result;
    }
}

Used for fetching data:

  final Query BarQuery = databaseReference11.child("Users").child("Expense");


    BarQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot tagsSnapshot : dataSnapshot.getChildren()) {
                Expense expense = tagsSnapshot.getValue(Expense.class);
                tagsArrayList.add(expense);

            }
        }//}

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("deeep", "onCancelled", databaseError.toException());
        }
    });

Json data:

 "ExpenseList" : {
        "-Ke8TQJeVar6nMlzEkbI" : {
          "Expense" : {
            "-KftUp3S5TvZuSbB30CW" : {
              "ExpenseTag" : {
                "-KftUp3Eyjf3cZZncvvT" : {
                  "tagId" : "-KftUp3Eyjf3cZZncvvT",
                  "tagName" : "tag"
                }
              },
             "expenseId" : "-KftUp3S5TvZuSbB30CW",
             "expenseName" : "bb",
                             }
          },
          "expenseListName" : "Dfg",

        }

Upvotes: 1

Views: 2573

Answers (1)

Badhrinath Canessane
Badhrinath Canessane

Reputation: 3518

The problem is that you have created an ExpenseTag Model but didn't add it to the Expense model as a field. I have updated the Expense model for you.

 public class Expense {

    public ExpenseTag expenseTag;
    public String expenseId;
    public String expenseName;

    public Expense() {
         /*Blank default constructor essential for Firebase*/
    }

    public Expense(ExpenseTag expenseTag , String expenseId, String expenseName) {

        this.expenseTag = expenseTag;
        this.expenseName = expenseName;
        this.expenseId = expenseId;

    }

    public ExpenseTag getExpenseTag() {
        return expenseTag;
    }

    public void setExpenseTag(ExpenseTag expenseTag) {
        this.expenseTag = expenseTag;
    }

    //Getters and setters
    public void setExpenseName(String expenseName) {
        this.expenseName = expenseName;
    }


    public void setExpenseId(String expenseId) {
        this.expenseId = expenseId;
    }

    public String getExpenseName() {
        return expenseName;
    }


    public String getExpenseId() {
        return expenseId;
    }


    @Exclude
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<>();
        result.put("expenseName", expenseName);
        result.put("expenseId", expenseId);
        return result;
    }
}

Upvotes: 1

Related Questions