Tuỳ chỉnh danh sách động Một phần của Android Jetpack.
Bạn có thể tuỳ chỉnh
RecyclerView
đáp ứng nhu cầu cụ thể của mình. Các lớp tiêu chuẩn được mô tả trong
Tạo danh sách động bằng
RecyclerView cung cấp tất cả chức năng mà hầu hết các nhà phát triển đều cần. Trong
trong nhiều trường hợp, bạn chỉ cần thiết kế thành phần hiển thị này cho từng phần tử giữ thành phần hiển thị và ghi
để cập nhật các chế độ xem đó với dữ liệu thích hợp. Tuy nhiên, nếu ứng dụng của bạn có
các yêu cầu cụ thể, bạn có thể sửa đổi hành vi chuẩn theo một số cách.
Tài liệu này mô tả một số tuỳ chỉnh có thể có.
Sửa đổi bố cục
RecyclerView
sử dụng trình quản lý bố cục để định vị từng
các mục trên màn hình và xác định thời điểm sử dụng lại các khung hiển thị mục không còn
hiển thị cho người dùng. Để sử dụng lại hoặc tái chế, một khung hiển thị, một bố cục
người quản lý có thể yêu cầu bộ chuyển đổi thay thế nội dung của chế độ xem bằng
phần tử khác nhau khỏi tập dữ liệu. Việc tái chế khung cảnh theo cách này sẽ giúp cải thiện
bằng cách tránh tạo các chế độ xem không cần thiết hoặc
đắt
findViewById()
lần tra cứu. Thư viện hỗ trợ Android bao gồm 3 trình quản lý bố cục chuẩn,
trong đó cung cấp nhiều tuỳ chọn tuỳ chỉnh:
LinearLayoutManager
: sắp xếp các mục trong danh sách một chiều. Sử dụngRecyclerView
vớiLinearLayoutManager
cung cấp nhưListView
của bạn.GridLayoutManager
: sắp xếp các mục trong lưới hai chiều, như các hình vuông trên bàn cờ. Sử dụngRecyclerView
vớiGridLayoutManager
cung cấp chức năng nhưGridView
của bạn.StaggeredGridLayoutManager
: sắp xếp các mục trong một lưới hai chiều, với mỗi cột được bù trừ một chút so với trước đó, chẳng hạn như những ngôi sao trên lá cờ Mỹ.
Nếu những trình quản lý bố cục này không phù hợp với nhu cầu của bạn, bạn có thể tạo trình quản lý bố cục riêng bằng cách
mở rộng
RecyclerView.LayoutManager
lớp trừu tượng.
Thêm ảnh động cho mục
Mỗi khi một mục thay đổi, RecyclerView
sẽ sử dụng ảnh động
để thay đổi giao diện. Trình tạo ảnh động này là một đối tượng mở rộng phần trừu tượng
RecyclerView.ItemAnimator
. Theo mặc định, RecyclerView
sử dụng
DefaultItemAnimator
để cung cấp ảnh động. Nếu muốn cung cấp ảnh động tuỳ chỉnh, bạn có thể
xác định đối tượng trình tạo hình động của riêng bạn bằng cách mở rộng
RecyclerView.ItemAnimator
.
Bật lựa chọn mục danh sách
Chiến lược phát hành đĩa đơn
recyclerview-selection
Thư viện này cho phép người dùng chọn các mục trong danh sách RecyclerView
bằng thao tác chạm
hoặc thao tác đầu vào bằng chuột. Điều này cho phép bạn duy trì quyền kiểm soát đối với việc trình bày trực quan
mục đã chọn. Bạn cũng có thể duy trì quyền kiểm soát đối với các chính sách kiểm soát việc lựa chọn
chẳng hạn như mục nào đủ điều kiện để chọn và số lượng mục có thể
được chọn.
Để thêm tính năng hỗ trợ lựa chọn vào một thực thể RecyclerView
, hãy làm theo
các bước sau:
- Xác định loại khoá lựa chọn để dùng, sau đó tạo một
ItemKeyProvider
.Có 3 loại khoá mà bạn có thể sử dụng để xác định các mục đã chọn:
Parcelable
và các lớp con của nó, nhưUri
String
Long
Để biết thông tin chi tiết về các loại khoá lựa chọn, hãy xem
SelectionTracker.Builder
. - Triển khai
ItemDetailsLookup
. - Cập nhật mục
View
đối tượng trongRecyclerView
để phản ánh việc người dùng chọn hoặc sẽ bỏ chọn chúng.Thư viện lựa chọn không cung cấp hình ảnh trang trí mặc định cho mục đã chọn. Cung cấp thông tin này khi bạn triển khai
onBindViewHolder()
. Bạn nên sử dụng phương pháp sau:- Trong
onBindViewHolder()
, gọisetActivated()
— không phảisetSelected()
—bật đối tượngView
cótrue
hoặcfalse
, tuỳ thuộc vào việc mục được chọn. - Cập nhật việc định kiểu của chế độ xem để thể hiện trạng thái đã kích hoạt. T4 đề xuất sử dụng trạng thái màu danh sách tài nguyên để định cấu hình kiểu.
- Trong
- Sử dụng
ActionMode
để cung cấp cho người dùng các công cụ để thực hiện hành động đối với lựa chọn. - Thực hiện mọi thao tác phụ đã được diễn giải.
- Tập hợp mọi thứ bằng
SelectionTracker.Builder
. - Đưa lựa chọn vào trong hoạt động các sự kiện trong vòng đời.
ItemDetailsLookup
cho phép thư viện lựa chọn truy cập
về RecyclerView
mục dựa trên giá trị
MotionEvent
.
Đây thực sự là một nhà máy
ItemDetails
các thực thể được sao lưu hoặc trích xuất từ một
RecyclerView.ViewHolder
thực thể.
Đăng ký một
SelectionTracker.SelectionObserver
để được thông báo khi một lựa chọn thay đổi. Khi một lựa chọn được tạo lần đầu tiên,
bắt đầu ActionMode
để trình bày nội dung này cho người dùng và cung cấp
các thao tác cụ thể được chọn. Ví dụ: bạn có thể thêm một nút xoá vào
Thanh ActionMode
và kết nối mũi tên quay lại trên thanh để xoá
lựa chọn. Khi lựa chọn trở nên trống – nếu người dùng xoá
chọn lần cuối cùng—chấm dứt chế độ hành động.
Ở cuối quy trình xử lý sự kiện, thư viện có thể xác định
người dùng đang cố gắng kích hoạt một mục bằng cách nhấn vào mục đó hoặc
cố gắng kéo một mục hoặc tập hợp các mục đã chọn. Phản ứng với những diễn giải này bằng cách đăng ký trình nghe thích hợp. Để biết thêm
thông tin, xem
SelectionTracker.Builder
.
Ví dụ sau đây cho thấy cách ghép các phần này lại với nhau:
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
Java
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
Để tạo một
SelectionTracker
Ví dụ: ứng dụng của bạn phải cung cấp cùng một
RecyclerView.Adapter
mà bạn dùng để khởi tạo RecyclerView
SelectionTracker.Builder
. Vì lý do này, sau khi bạn tạo
SelectionTracker
, chèn thực thể này vào
RecyclerView.Adapter
Nếu không, bạn không thể kiểm tra
trạng thái đã chọn từ phương thức onBindViewHolder()
.
Để duy trì trạng thái lựa chọn trong các sự kiện trong vòng đời hoạt động, ứng dụng của bạn
Trình theo dõi lựa chọn
onSaveInstanceState()
và
onRestoreInstanceState()
phương thức lấy từ dữ liệu của hoạt động
onSaveInstanceState()
và
onRestoreInstanceState()
tương ứng. Ứng dụng của bạn cũng phải cung cấp một mã lựa chọn duy nhất cho
Hàm khởi tạo SelectionTracker.Builder
. Mã nhận dạng này là bắt buộc vì
một hoạt động hoặc một mảnh có thể có nhiều danh sách riêng biệt có thể chọn
tất cả đều cần được duy trì ở trạng thái đã lưu.
Tài nguyên khác
Hãy xem các tài liệu tham khảo sau đây để biết thêm thông tin.
- Hoa hướng dương
ứng dụng minh hoạ, sử dụng
RecyclerView
. - Mục đích sử dụng Lớp học lập trình về RecyclerView để hiển thị danh sách có thể cuộn.
- Android Kiến thức cơ bản về Kotlin: Lớp học lập trình cơ bản về RecyclerView.