2011-11-14 34 views
16

Tôi biết rằng ListAdapter là một giao diện và ArrayAdapter là một lớp. Vì vậy, chúng tôi chỉ có thể khởi tạo ArrayAdapter. Tôi gặp một mãSự khác biệt giữa ArrayAdapter và ListAdapter trong Android?

ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songNames); 

Nhưng tôi đã có thể làm điều tương tự với

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songsArray); 

Vì vậy, tôi muốn biết, trong những gì nơi chính xác chúng ta cần ListAdapter?

Cảm ơn bạn

Trả lời

25

Điều này không liên quan đến Android. Nhưng một câu hỏi chung về Java.

Khi bạn sử dụng ListAdapter làm loại cho biến của mình, bạn thực sự quan tâm đến giao diện. Bạn có thể không muốn gọi một số phương thức cụ thể của ArrayAdapter<String> không có sẵn trong ListAdapter. Đó là chủ yếu bởi vì bạn sẽ chỉ gán bộ điều hợp làm bộ điều hợp danh sách cho khung nhìn.

Bạn có thể sử dụng loại chính xác ArrayAdapter<String> nếu bạn thực sự cần gọi một số phương pháp cụ thể.

Tất cả phụ thuộc vào trường hợp sử dụng của bạn.

0

BaseAdapter Bộ điều hợp chung của nó cho phép bạn làm khá nhiều thứ bạn muốn. Đây là lớp cơ sở của tất cả bộ điều hợp.

ArrayAdapter Triển khai hoàn chỉnh hơn hoạt động tốt cho dữ liệu trong mảng hoặc ArrayLists. Tương tự, có một CursorAdapter liên quan mà bạn nên sử dụng nếu dữ liệu của bạn nằm trong một Con trỏ. Cả hai đều mở rộng BaseAdapter

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