Chào mừng bạn đến với Phần 35 của Khóa học Android, Liệt kê các khóa học – Tập 1 – Bộ điều hợp và Chế độ xem bộ điều hợp bộ điều hợp. Đây là một bài học trong sê-ri Sách mã vàng về lập trình ứng dụng Android bằng Java.
Chào mọi người. Trước khi lớp học hôm nay bắt đầu, tôi đã nhận được rất nhiều câu hỏi từ bạn về việc xây dựng ứng dụng Android chính thức của riêng bạn. Điều này chứng tỏ rằng 34 bài viết trước đây của tôi cũng cung cấp cho bạn đủ nền tảng để hiểu cách xây dựng ứng dụng android. Ít nhất, đó cũng là một động lực để tận hưởng và khám phá những kiến thức mà bạn mang theo bên mình. Đây là một tin tốt.
Tuy nhiên, sẽ là một tội lỗi lớn nếu ngừng viết vào thời điểm này. Ngày nay. Sau nhiều cân nhắc, tôi quyết định nói về một nơi mạnh mẽ khác của Android. Một danh mục chủ đề rất phổ biến, không chỉ trên thiết bị di động, chủ đề được gọi là: danh sách.
Hãy nhớ những gì chúng ta đã nói về danh sách, một giao diện. Về kiến thức, nó khác với cấu trúc dữ liệu list (list) mà tôi sẽ nói trong lớp java của mình. Giao diện danh sách ngày nay có liên quan đến hai khái niệm mở: bộ điều hợp và chế độ xem bộ điều hợp. Tôi mời bạn bắt đầu với hai thành phần cơ bản này.
Trước tiên hãy nói về bộ chuyển đổi. Thành thật mà nói, trong những ngày đầu tiên làm quen với Android, khi tôi đọc về bộ chuyển đổi, cảm giác của tôi là bộ chuyển đổi giống như hình minh họa của tôi ở trên. nó ở đây.
Sau khi nghiên cứu kỹ thì thấy rằng nếu hiểu theo chức năng thì rõ ràng bộ chuyển đổi của android có chức năng của bộ chuyển đổi ngoài đời thực. bộ chuyển đổi ngoài đời thực chịu trách nhiệm chuyển đổi các đặc điểm của thiết bị đầu vào thành các đặc điểm phù hợp hơn với thiết bị đầu ra. bộ điều hợp trong Android chịu trách nhiệm chuyển đổi dữ liệu thô đầu vào (tôi gọi nó là nguồn dữ liệu, như minh họa bên dưới) thành dữ liệu hiển thị. Để xem người dùng có thể dễ dàng đọc, hiểu và tương tác. Về cơ bản, chức năng của bộ chuyển đổi sẽ được minh họa bằng sơ đồ bên dưới.
Đến đây sẽ khiến bạn ngẩn ngơ. Bạn đang nghĩ, tại sao việc chuyển đổi dữ liệu này lại cần thiết? Các bài học trước có đề cập đến bất cứ điều gì liên quan đến việc chuyển đổi dữ liệu này không? Trên thực tế, sự biến hóa này rất quan trọng, trước đây tôi chưa từng tiếp xúc với nó, cũng không quen thuộc, nhưng bây giờ tôi đã biết.
Chúng ta sẽ bắt đầu bằng cách học những từ ước thực tế. Tất cả các bạn đều biết điều đó. Theo lời mở đầu của bài viết trên. Hầu hết các ứng dụng, không chỉ ứng dụng dành cho thiết bị di động, cần hiển thị một loại giao diện đặc biệt: kiểu danh sách. Nó có thể là danh sách hình ảnh, danh sách email gửi đến. Hoặc giống như tournote, đây là danh sách các ghi chú mà bạn sẽ bắt đầu xây dựng. Các danh sách này được sắp xếp theo chiều ngang hoặc chiều dọc trên một vùng không gian màn hình hoặc trong một bảng (còn gọi là lưới) hoặc mỗi thành phần danh sách là một màn hình (chế độ xem trang). Nói chung, bạn đã biết nhiều loại danh sách. Giống như ảnh chụp màn hình của tôi dưới đây.
Như bạn có thể thấy, những danh sách này chứa nhiều phần tử. Mỗi phần tử có thể chỉ là văn bản, ảnh, ảnh và văn bản, biểu tượng và văn bản, v.v. Số lượng phần tử trong danh sách có thể được cố định hoặc thêm động. Ứng dụng được thực thi (như ghi chú du lịch, hay chính xác hơn là thành phần nguồn cấp dữ liệu trong danh sách nguồn cấp dữ liệu facebook).
Từ những yêu cầu đặc biệt ở trên đối với giao diện list, có thể thấy rằng không thể viết một dòng mã rồi thêm từng phần tử vào một chế độ xem (chẳng hạn như scrollview chẳng hạn) để mô phỏng một danh sách. Bạn phải sử dụng bộ chuyển đổi. bộ chuyển đổi sẽ giúp bạn chuyển đổi dữ liệu từ nguồn dữ liệu ban đầu thành một danh sách có giao diện chuyên nghiệp. Từ giờ trở đi, chúng tôi sẽ gọi những danh sách này là adapterview. Vì vậy, đối với trí nhớ dài hạn, sơ đồ của chúng ta nên được viết lại một cách thích hợp như sau.
Qua bức tranh trên, chúng ta sẽ học được gì từ chuỗi kiến thức adapter này?
- Giới thiệu về khối nguồn dữ liệu: đọc thì nghe có vẻ hay, nhưng nó thực sự chỉ là một kiểu mảng hoặc danh sách. bộ điều hợp sẽ có cách (hoặc ít nhiều bạn có thể giúp bộ điều hợp) hiểu các lớp hoặc cấu trúc này để chuyển chúng sang màn hình bộ điều hợp . Hiển thị cho người dùng.
- Giới thiệu về khối bộ điều hợp: Chúng ta sẽ làm quen với bộ điều hợp mảng do hệ thống trước đó cung cấp. Sau đó, trong các bài học tiếp theo, chúng ta sẽ tìm cách tùy chỉnh (hay còn gọi là tùy chỉnh) bộ điều hợp mảng này để chúng ta có thể hiển thị các danh sách phức tạp khi cần. Ngoài arrayadapter , sau này bạn sẽ bắt gặp một số lớp adapter khác cho một số danh sách cụ thể. Mặc dù chúng có các tên khác nhau, nhưng mỗi chúng đều có từ adapter ở cuối tên, chẳng hạn như expandaplelistadapter, pageradapter. Ngoài ra, bộ điều hợp được cấu tạo gần như giống hệt nhau nên bạn có thể yên tâm rằng nó sẽ không khiến bạn đau đầu.
- Giới thiệu về khối adapterview: Chà, việc học sẽ mất nhiều thời gian như adapter. Bạn sẽ làm quen với listview, gridview, expandablelistview, gallery, stackview, Trục quay. Ngoài ra còn có recyclerview. Mặc dù về bản chất recyclerview không nằm trong khối adapterview nhưng vì chức năng và cách sử dụng tương tự nhau nên thôi đề cập ở đây thôi, nói về recyclerview > in Được sử dụng một mình trong lớp khác.
- Tham số đầu tiên yêu cầu bối cảnh. bối cảnh là gì, chúng ta sẽ biết sau. Trong trường hợp này, hoạt động là một ngữ cảnh, vì vậy chúng tôi sử dụng từ khóa điều này, có nghĩa là hoạt động này (hoạt động liên hệ).
- Tham số thứ hai chúng tôi chuyển vào android.r.layout.simple_list_item_1. Đây là view đi kèm với hệ thống, dùng tạm bạn nhé. Chế độ xem này hiển thị một chuỗi duy nhất trên chế độ xem văn bản của các thành phần trong danh sách. Nói cách khác, danh sách hoặc listview của chúng tôi sẽ là một danh sách textview, mỗi textview sẽ giúp hiển thị một của chuỗi của chúng tôi. Đối với mỗi phần tử danh sách này, chúng tôi đang tạm thời sử dụng hệ thống hiện có. Mặc dù việc sử dụng tạm thời này mang lại listview “tầm thường”, nhưng nó đủ để đưa chúng tôi đến bộ điều hợp. Chúng ta sẽ cùng nhau xây dựng một listview “khổng lồ” trong bài học tiếp theo.
- tham số thứ ba là nguồn dữ liệu đã khai báo. Bạn biết đấy, nguồn dữ liệu này được chuyển vào để bộ điều hợp mảng biết mỗi chuỗi phải hiển thị gì trong mỗi chế độ xem văn bản >Từng phần tử danh sách.
Ôi, đau đầu quá. Đừng lo lắng, chúng ta sẽ học từ từ. Với một vài ví dụ, bạn sẽ hiểu cách vận hành nhanh ba datasource – adapter – adapterview.
Từ những gì tôi đã nói ở trên, bạn đã biết rằng listview là một adapterview. arrayadapter là một bộ điều hợp. datasource Chúng ta sẽ sử dụng mảng tích hợp sau. Bạn sẽ thấy kết hợp Datasource – Adapter – AdapterView trong bài đăng ví dụ hôm nay để hiểu rõ hơn về giao diện list.
.
Tuy nhiên, tôi muốn nói thêm rằng tôi đã không đề cập cụ thể mục này trong adapter hoặc adapterview. Tôi chỉ sử dụng những gì có sẵn trong hệ thống để bạn có thể hiểu được ý chính của bài học. Bạn sẽ tìm hiểu thêm về bộ điều hợp trong các bài viết sắp tới. Trong các phần tiếp theo của loạt bài về list, bạn cũng sẽ hiểu rõ hơn về listview hoặc adapterview khác. Hãy theo dõi để đọc.
Hãy suy nghĩ thêm trước khi chính thức xây dựng listview. Đây là code của khóa học hôm nay, mặc dù được áp dụng trên tournote nhưng sẽ không được đăng trên github. Vì listview và adapter trong bài viết này rất sơ sài nên chúng ta sẽ cần một giao diện list nâng cao và phức tạp hơn và sẽ có trong bài học sau .
Vui lòng mở dự án tournote. Tôi sẽ xây dựng listview trên đầu hoạt động contactactivity vì mã và giao diện trong hoạt động này đơn giản và chúng tôi có thể dễ dàng viết mã và kiểm tra. Bạn cũng có thể tự tạo một dự án mới và làm theo các bước dưới đây.
Tạo nguồn dữ liệu
Kiến trúc nghe có vẻ kinh khủng. Điều quan trọng nhất là chúng ta khai báo một mảng string trong contactactivity, như hình bên dưới. Chúng là nguồn dữ liệu của chúng tôi.
mảng mục ở trên là nguồn dữ liệu. Đừng cố hiểu ý nghĩa của chuỗi bên trong mảng, tôi chỉ tạo một đốm màu, tạo nhiều phần tử mảng nhỏ để cắt danh sách hiển thị trên màn hình đủ lâu vì Bạn cố gắng cuộn lên/xuống. Bạn có thể sử dụng danh sách thay vì mảng. Nhưng bài học hôm nay đơn giản nhất là mảng, và mình sẽ có cơ hội sử dụng list
trong tương lai
Chế độ xem bộ điều hợp bản dựng
Chế độ xem bộ điều hợp mà chúng tôi muốn tạo là Chế độ xem danh sách. Bởi vì adapterview là một chế độ xem nên nó có thể được “trượt vào” giao diện của hoạt động. Nếu không, bạn cũng có thể nhìn thấy chúng trong pallet của trình chỉnh sửa giao diện. Vui lòng mở tệp giao diện activity_contact.xml, nhớ chọn nhãn thiết kế trong trình chỉnh sửa này rồi tìm kiếm.
Để listview vừa với màn hình activity_contact, bạn có thể kéo và thả listview từ pallet mạnh> đến thiết kế màn hình trực quan . Sau đó căn chỉnh các thông số của listview này sao cho nó chiếm hết không gian màn hình, như hình bên dưới, các bạn để ý một số căn chỉnh của mình trong khung đỏ (các bạn có thể xem thêm bài viết của mình về constraintlayout này nếu bạn vẫn chưa tự tin về sự liên kết giao diện của bố cục này).
Đừng quên đặt id của listview này thành my_lisview. Trong đoạn mã java sau, khi sử dụng adapter để kết xuất dữ liệu từ datasource sang listview này, chúng ta sẽ cần id mạnh >.
Nếu chúng ta chuyển sang tab Văn bản của cửa sổ thiết kế, listview mới được thêm vào của chúng ta sẽ trông như thế này.
Sử dụng bộ điều hợp để kết nối nguồn dữ liệu với chế độ xem bộ điều hợp
Chúng tôi đã có nguồn dữ liệu, vốn đã là một mảng gồm chuỗi và cũng đã khai báo adapterview là listview mạnh > mạnh > > Đã. Vậy bộ chuyển đổi được sử dụng như thế nào? Như đã đề cập trước đó, chúng tôi sẽ sử dụng arrayadapter. Vui lòng thêm dòng mã được đánh dấu sau vào hoạt động liên hệ, tôi sẽ giải thích sau.
Dòng mã đầu tiên.
Dòng code này chắc mọi người cũng đã quen rồi nên không nói nhiều. Về cơ bản, nó giúp chúng ta khai báo một listview được gọi là mylistview trong mã java. listview này cũng là một listview được vẽ trên giao diện xml, vì vậy chúng ta sẽ cần sử dụng mã java listviewmới tạo sau này. Tuyên bố này.
Dòng mã quan trọng tiếp theo là dòng khởi tạo arrayadapter có tên myarrayadapter. arrayadapter này được khai báo là arrayadapter, nghĩa là adapter này chuyển đổi danh sách string từ Nguồn dữ liệu thành chế độ xem bộ điều hợp.
Hãy làm quen với 3 tham số được truyền cho hàm tạo arrayadapter này.
Dòng mã cuối cùng cần tìm hiểu. Ngắn nhưng quan trọng. Không có nó, listview không có dữ liệu. Đây là dòng gán arrayadapter vừa khai báo cho listview .
Đây là kết quả khi bạn thực thi chương trình (hãy nhớ rằng bạn phải chuyển đến màn hình hoạt động tiếp xúc bằng cách chọn hoạt động chính trên thanh hành động của màn hình chính sau khi thực hiện ).
wow Khi listview xuất hiện như trên có nghĩa là bạn đã thành công và hiểu một cách đơn giản khái niệm adapter & adapterview Đã có nó cho bài học hôm nay. Bạn có thể thử cuộn lên/xuống danh sách mới tạo này. Thậm chí, hãy thử nhấp vào từng phần tử trong danh sách để xem chúng trông như thế nào. Tất nhiên, khi click vào từng phần tử trong danh sách, mọi thứ vẫn rất “lười biếng” vì chúng ta chưa viết đoạn mã nào cho sự kiện này. Bài học này khá dài và tôi sẽ tiếp tục theo dõi các sự kiện trên adapterview và cụ thể là listview trong bài học tiếp theo.
Bài tiếp theo
Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu thêm về chế độ xem danh sách. Tìm hiểu xem có hỗ trợ nào tốt cho bộ điều hợp và chế độ xem bộ điều hợp không, đồng thời thử “thủ thuật” để xây dựng bộ điều hợp và chế độ xem bộ điều hợp của chúng tôi. Ngoài ra, bài viết này cũng sẽ nói về việc xây dựng các sự kiện trên listview.