Search code examples
androidandroid-cursoradapter

Return object from CursorAdapter.get()


I'm overriding CursorAdapter and I need to get the last item, problem is that CursorAdapter has actually a get() method...but source is a db and it returns a plain object!! (I don't even know what is it, I'd expect it returning a Cursor object instead...)

Neverthless, how can I make it return an instance of my Wrapper db row class?

Example: say my db has rows like these:

id|first name| surname

I'd make a class Person from that.

Now I'd like to have a Person get(int i) method from cursor adapter...


Solution

  • Now I'd like to have a Person get(int i) method from cursor adapter...

    This seems like a strange request. I would pass the Cursor itself (or the Cursor returned from CursorAdapter's getItem()) to a regular method in my Activity instead. But here are the basic steps to create a Person get() method.

    Create your Person class:

    public class Person {
        long id;
        String firstName;
        String surname;
    }
    

    And in your custom CursorAdapter simply use a method like this:

    public Person get(int position) {
        Cursor cursor = getCursor();
        Person person;
        if(cursor.moveToPosition(position)) {
            person = new Person();
            person.id = cursor.getLong(cursor.getColumnIndex("_id"));
            person.firstName = cursor.getString(cursor.getColumnIndex("firstName"));
            person.surname = cursor.getString(cursor.getColumnIndex("surname"));
            results.add(person);
        }
    
        return person;
    }