2012-08-29 9 views
8

CursorAdapterをオーバーライドしていますが、最後のアイテムを取得する必要があります。問題はCursorAdapterが実際にget()メソッドを持っていますが、ソースはdbで、 !! (私はそれが何であるか分からず、代わりにCursorオブジェクトを返すことを期待しています...)CursorAdapter.get()からオブジェクトを返します

私はWrapper dbの行クラスのインスタンスを返すことができますか?

例: は私のDBはこれらのような行を持って言う:

ID |最初の名前|姓

私はクラスを作るだろうそれから。

今私は...カーソルアダプタから人を取得(int型I)メソッドを持っている

答えて

19

が欲しい今、私はカーソルアダプタから人を取得(int型I)メソッドを持っているしたいと思います。 ..

これは奇妙な要求のようです。 Cursor自体(またはCursorAdapterのgetItem()から返されたCursor)をアクティビティの通常のメソッドに渡します。 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; 
} 
42

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

Cursor cursor = (Cursor) myCursorAdapter.getItem(position); 
String myColumnValue = cursor.getString(cursor.getColumnIndex("YOUR_COLUMN_NAME")); 
+6

これは正しいです。 – user123321

+0

素晴らしい!決して知らなかった。私の人生の数時間を節約できました! – barmaley

関連する問題