从CursorAdapter.get()返回对象

use*_*075 9 android android-cursoradapter

我重写了CursorAdapter,我需要得到最后一项,问题是CursorAdapter实际上有一个get()方法......但是source是一个db,它返回一个普通的对象!(我甚至不知道它是什么,我希望它返回一个Cursor对象......)

无论如何,我如何让它返回我的Wrapper数据库行类的实例?

示例:说我的db有这样的行:

id |名字| 姓

我从那里做了一个班级的.

现在我想从游标适配器获得一个Person get(int i)方法...

urS*_*Sus 44

好吧,只需使用adapter.getItem()并将其强制转换为Cursor,并且无需像接受的答案那样手动移动光标

Cursor cursor = (Cursor) myCursorAdapter.getItem(position);
String myColumnValue = cursor.getString(cursor.getColumnIndex("YOUR_COLUMN_NAME"));
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,应该是接受的答案 (6认同)

Sam*_*Sam 21

现在我想从游标适配器获得一个Person get(int i)方法...

这似乎是一个奇怪的要求.我会将Cursor本身(或从CursorAdapter返回的Cursor getItem())传递给我的Activity中的常规方法.但这是创建Person get()方法的基本步骤.

创建Person类:

public class Person {
    long id;
    String firstName;
    String surname;
}
Run Code Online (Sandbox Code Playgroud)

在您的自定义CursorAdapter中,只需使用如下方法:

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;
}
Run Code Online (Sandbox Code Playgroud)