Vai trò của bộ điều hợp trong Android là gì?


123

Tôi muốn biết khi nào , ở đâulàm thế nào các bộ điều hợp được sử dụng trong bối cảnh của Android.

Thông tin từ tài liệu dành cho nhà phát triển của Android là không đủ đối với tôi và tôi muốn có được một phân tích chi tiết hơn.

Câu trả lời:


29

Giả sử bạn muốn hiển thị danh sách trong ứng dụng Android của mình. Đối với điều này, bạn sẽ sử dụng ListViewđược cung cấp bởi Android. ListViews thực sự không chứa bất kỳ dữ liệu nào. Nó chỉ là một thành phần UI không có dữ liệu trong đó. Bạn có thể điền vào ListViews của mình bằng cách sử dụng bộ chuyển đổi Android.

Adapterlà một giao diện mà việc triển khai cung cấp dữ liệu và kiểm soát việc hiển thị dữ liệu đó. ListViewbộ điều hợp riêng điều khiển hoàn toàn ListViewmàn hình của. Vì vậy, bộ điều hợp kiểm soát nội dung được hiển thị trong danh sách cũng như cách hiển thị nó.

Các Adaptergiao diện bao gồm các phương pháp khác nhau để giao tiếp dữ liệu đến ListView. Bạn có thể tạo bộ điều hợp của riêng bạn từ đầu bằng cách thực hiện BaseAdapter.

public class ArrayAdapter<T> extends BaseAdapter implements Filterable {

// One of the constructors
public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {
    init(context, resource, textViewResourceId, Arrays.asList(objects));
}

void manyMoreMethods(){} 

}

Cho phép xác định một bộ chuyển đổi:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
   android.R.layout.simple_list_item_1, android.R.id.text1, values);
  • Tham số đầu tiên: Bối cảnh
  • Tham số thứ hai: Bố cục cho hàng
  • Tham số thứ ba: ID của TextViewdữ liệu được ghi
  • Tham số thứ tư: Mảng dữ liệu

45

Các bộ điều hợp tốt trong Android về cơ bản là cầu nối giữa các thành phần UI và nguồn dữ liệu điền dữ liệu vào Thành phần UI

Ví dụ: Danh sách (Thành phần UI) được điền bằng cách sử dụng bộ điều hợp danh sách, từ một mảng nguồn dữ liệu.


21
Đây là cùng một thông tin mà tôi có thể nhận được từ tài liệu. Nhưng tôi muốn một lời giải thích chi tiết
Robin

25

Tôi muốn chia sẻ sự hiểu biết của tôi.

Đó là giao diện giữa nguồn dữ liệu và bố cục của bạn (rất có thể là ListView).

Một sự tương tự

Hãy lấy ví dụ về bộ sạc di động, hay đúng hơn là cáp USB. Dây có thể được coi là bộ chuyển đổi, trong khi nguồn dữ liệu và bố cục có thể được hiểu là ổ cắm (điểm cắm) và cổng USB (điểm sạc) tương ứng.

Trong trường hợp sạc điện thoại di động, nguồn điện có thể khác nhau, ví dụ sạc từ ngân hàng điện, ổ cắm hoặc máy tính xách tay. Tương tự là trường hợp cho các bộ điều hợp được sử dụng trong Android. Nguồn dữ liệu có thể được thay đổi tùy theo yêu cầu ứng dụng.

Nói tóm lại, một bộ điều hợp trong Android mang dữ liệu từ một nguồn (ví dụ ArrayList<>) và đưa nó đến một bố cục (tệp .xml).


2
Ví dụ tốt nhất cho đến nay: D Công việc tốt!
Daksh Gargas

8

Bộ điều hợp trong Android là cầu nối giữa chế độ xem bộ điều hợp (ví dụ ListView) và dữ liệu cơ bản cho chế độ xem đó. Hãy tưởng tượng thế giới sẽ ra sao nếu không có bộ điều hợp!

Ví dụ

  • Một khung nhìn hiển thị các mục trong danh sách cuộn theo chiều dọc. Các mục đến từ ListAdapterliên kết với quan điểm này.

  • Việc ListAdapterxác định bố cục cho các hàng riêng lẻ của danh sách và cung cấp dữ liệu cho ListViewthông qua setAdapter()phương thức ListView.

  • Android cung cấp một số bộ điều hợp tiêu chuẩn; quan trọng nhất là ArrayAdapterCursorAdapter.

  • ArrayAdapter có thể xử lý dữ liệu dựa trên mảng hoặc danh sách.

  • SimpleCursorAdapter có thể xử lý dữ liệu liên quan đến cơ sở dữ liệu.

4

Bộ điều hợp cơ bản được sử dụng để cung cấp nội dung. Một bộ điều hợp bạn có thể có trong mọi ứng dụng là CthonAd CHƯƠNG cho phép bạn phân phối nội dung được cung cấp bởi một con trỏ từ truy vấn cơ sở dữ liệu. Một ListView gần như luôn luôn có một số loại Adaptor.


7
Đây là cùng một thông tin mà tôi có thể nhận được từ tài liệu. Nhưng tôi muốn một lời giải thích chi tiết
Robin

@Robin: tại sao bạn không kỷ niệm 10 năm câu hỏi của mình bằng cách "chấp nhận" một trong những câu trả lời. Cá nhân: 1) Tôi thấy câu hỏi của bạn có giá trị (đó là cách tôi giải quyết ở đây), 2) Tôi thấy nhiều câu trả lời này hữu ích (bao gồm cả câu hỏi này) ... và 3) Tôi không hiểu ý của bạn là gì " một lời giải thích chi tiết hơn ". Có lẽ đó là vì tôi quan tâm nhiều hơn đến "tại sao" (cũng được giải thích ở trên).; Tôi quan tâm đến "khu rừng" (như phản hồi của WarrenFaith) hơn là "cây chi tiết" (mà tôi có thể nhận được từ tài liệu này). Vui lòng upvote và chấp nhận :)
FoggyDay

4

Một bộ chuyển đổi hoạt động như một cầu nối giữa một AdapterViewvà dữ liệu cơ bản cho chế độ xem đó. Bộ điều hợp cung cấp quyền truy cập vào các mục dữ liệu và chịu trách nhiệm tạo chế độ xem cho từng mục trong bộ dữ liệu.

Bộ điều hợp là một cách thông minh để kết nối a Viewvới một loại nguồn dữ liệu. Thông thường, chế độ xem của bạn sẽ là một ListViewvà dữ liệu sẽ có dạng Cursorhoặc Array. Vì vậy, bộ điều hợp đến như là các lớp con của CursorAdapterhoặc ArrayAdapter.


2

Một bộ điều hợp quản lý mô hình dữ liệu và điều chỉnh nó cho các hàng riêng lẻ trong chế độ xem danh sách. Nó mở rộng BaseAdapterlớp học.

Mỗi dòng trong chế độ xem danh sách bao gồm một bố cục có thể phức tạp như bạn muốn. Một dòng điển hình trong chế độ xem danh sách có hình ảnh ở bên trái và hai dòng văn bản ở giữa.


0

Adaptor được sử dụng đơn giản để đạt được khái niệm listview. Không chỉ để hiển thị danh sách dữ liệu mà còn một số chế độ xem tùy chỉnh. Giả sử khách hàng muốn sử dụng danh sách có số lượng textview nhiều hơn (bất kỳ chế độ xem nào khác) thì chúng ta phải sử dụng chế độ xem Bộ điều hợp trong Android.


0

Đã có nhiều câu trả lời, nhưng tôi muốn đưa ra một câu trả lời khác.

Adaptor có nghĩa là bạn có thể cung cấp cầu nối của nó .

Bộ điều hợp là liên kết giữa một tập hợp dữ liệu và AdapterView hiển thị dữ liệu.


0

Cuối cùng, bộ điều hợp rất hữu ích để làm báo cáo. Nếu một người muốn hiển thị một báo cáo về một số thông tin, người ta có thể sử dụng công cụ này để hiển thị dữ liệu trên chế độ xem.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.