2012-08-29 37 views
8

Tôi ghi đè CursorAdapter và tôi cần lấy mục cuối cùng, vấn đề là CursorAdapter thực sự có phương thức get() ... nhưng nguồn là db và nó trả về một đối tượng đơn giản !! (Tôi thậm chí không biết nó là gì, tôi hy vọng nó sẽ trả về một đối tượng Con trỏ thay thế ...)Trả về đối tượng từ CursorAdapter.get()

Không thể, làm thế nào tôi có thể làm cho nó trở lại một thể hiện của lớp hàng Wrapper db của tôi?

Ví dụ: nói db của tôi có hàng như thế này:

id | tên đầu tiên | họ

Tôi muốn tạo một lớp học Người từ đó.

Bây giờ tôi muốn có một người nhận được (int i) phương pháp từ bộ chuyển đổi con trỏ ...

Trả lời

19

Bây giờ tôi muốn có một người nhận được (int i) phương pháp từ bộ chuyển đổi con trỏ. ..

Điều này có vẻ như một yêu cầu lạ. Tôi sẽ vượt qua chính con trỏ (hoặc con trỏ trở về từ CursorAdapter's getItem()) đến một phương pháp thông thường trong hoạt động của tôi để thay thế. Nhưng đây là các bước cơ bản để tạo phương thức Person get().

Tạo lớp Person của bạn:

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

Và trong CursorAdapter tùy chỉnh của bạn chỉ cần sử dụng một phương pháp như thế này:

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

cũng chỉ cần sử dụng adapter.getItem() và đúc nó vào con trỏ, và không cần di chuyển con trỏ theo cách thủ công như trong câu trả lời được chấp nhận

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

điều này là chính xác và nên chấp nhận câu trả lời – user123321

+0

Thật tuyệt vời! Không bao giờ biết. Đã lưu vài giờ trong cuộc đời của tôi! – barmaley

Các vấn đề liên quan