9

CursorAdapter をオーバーライドしていますが、最後のアイテムを取得する必要があります。問題は、CursorAdapter に実際に get() メソッドがあることです...しかし、ソースはデータベースであり、プレーン オブジェクトを返します!! (それが何であるかさえわかりません。代わりに Cursor オブジェクトを返すことを期待しています...)

それにもかかわらず、Wrapper db 行クラスのインスタンスを返すにはどうすればよいですか?

例: 私のデータベースに次のような行があるとします:

ID|名| 姓

それからクラスPersonを作成します。

ここで、カーソル アダプターから Person get(int i) メソッドを使用したいと思います...

4

3 に答える 3

44

adapter.getItem() を使用して Cursor にキャストするだけで、受け入れられた回答のようにカーソルを手動で移動する必要はありません

Cursor cursor = (Cursor) myCursorAdapter.getItem(position);
String myColumnValue = cursor.getString(cursor.getColumnIndex("YOUR_COLUMN_NAME"));
于 2012-12-25T02:44:28.873 に答える
21

ここで、カーソル アダプターから Person get(int i) メソッドを使用したいと思います...

これは奇妙な要求のように思えます。代わりに、 Cursor 自体 (または CursorAdapter から返された Cursor getItem()) を Activity の通常のメソッドに渡します。ただしPerson get()、メソッドを作成するための基本的な手順は次のとおりです。

Person クラスを作成します。

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

カスタム 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;
}
于 2012-08-29T16:42:01.237 に答える