Simon
Simon

Reputation: 471

Error "Can't convert object of type" in custom FirebaseListAdapter

My app uses custom FirebaseListAdapter. I have created AreaGridAdap.java,

public class AreaGridAdap {

    String gridArea;

    public AreaGridAdap(){

    }

    public AreaGridAdap(String gridArea) {
        this.gridArea = gridArea;
    }


    public String getGridArea() {
        return gridArea;
    }
}

this is my firebaseListAdapter,

final FirebaseListAdapter<AreaGridAdap> firebaseListAdapter = new FirebaseListAdapter<AreaGridAdap> (AreaGridActivity.this,
                AreaGridAdap.class,
                R.layout.area_grid,
                databaseReference) {
            @Override
            protected void populateView(View v, AreaGridAdap model, int position) {

                areaTextView = (TextView) v.findViewById(R.id.areaGridText);

                areaTextView.setText(model.getGridArea());
            }
        };

For the first time I have used default FirebaseListAdapter and it worked fine. But when I use custom FirebaseListAdapter, my app crashes and I got this as my error message:

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type trickandroid.fulllogin.AreaGridAdap

Help me solve this error.

Upvotes: 0

Views: 229

Answers (1)

Frank van Puffelen
Frank van Puffelen

Reputation: 598728

This error message means that the data structure under databaseReference doesn't match your code. It looks like you have a data structure like this:

-K....1: "First value"
-K....2: "Second value"
-K....3: "Third value"

While your code is made to handle this structure:

-K....1: {
  gridArea: "First value"
}
-K....2: {
  gridArea: "Second value"
}
-K....3: {
  gridArea: "Third value"
}

Upvotes: 2

Related Questions