Android

ListView Multiple Selection Và ListView Single Selection

Giới thiệu

Hai bài viết trước mình đã đề cập đến cách sử dụng ListView từ cơ bản đến nâng cao cũng như giúp các bạn hiểu được bản chất của Adapter. Nếu bạn nào chưa đọc qua hai bài viết đó thì có thể xem lại ở link bài viết dưới đây:

ListView trong Android Phần 1

ListView trong Android Phần 2

Trong bài viết này tôi sẽ giới thiệu cho các bạn về ListView Multiple Selection và ListView Single Selection

Tổng quan về ListView Multiple Selection và ListView Single Selection

ListView Multiple Selection là ListView cho phép các bạn được chọn nhiều item. Trường hợp sử dụng ListView này là bạn có thể chọn nhiều item và áp dụng một hành động nào đó vào những item này, ví dụ như xoá những số trong danh bạn, xoá nhiều tin nhắn vv..

ListView Single Selection là ListView cho phép bạn chọn duy nhất một item. ListView này sử dụng trong trường hợp bạn chỉ cho phép chọn một item mà thôi.

Để dễ hình dung rõ hai loại ListView này các bạn hãy xem qua video Demo:

Soure code sử dụng trong bài viết: ListViewMultipleAndSingleSelection

Trước khi bắt đầu tôi tạo project ListViewMultipleAndSingleSelection

Gồm 3 Activity là:

  • ListViewMultipleSelectionActivity: Xử lý ListView multiple Selection.
  • ListViewSingleSelectionActivity: Xử lý ListView Single Seletion.
  • MainActivity: Chứa 2 button để chuyển hướng qua hai activity trên.

ListView Multiple Selection

File activity_list_view_multiple_selection.xml

Checkbox có nhiệm vụ sẽ check hết các item có trong ListView.

Button sẽ lấy ra thông tin của những đã select.

File ListViewMultipleSelectionActivityActivity.java

Tạo Adapter cho ListView multiple selection

Đối với ListView Multiple Selection chúng ta phải tạo Adapter như sau:

+ Layout resoure truyền vào là layout đã được định nghĩa trong hệ thống android.R.layout.simple_list_item_multiple_choice.xml

File này có mã nguồn như sau:

Có thể hiểu rằng một row trong ListView này là một CheckedTextView.

+ Phải set mode cho ListView sử dụng đoạn mã:

Lấy ra các item đã chọn trong ListView

Chúng ta có thể lấy ra thông tin các item đã chọn trên ListView bằng cách sử dụng

Phương thức này sẽ trả về một SparseBooleanArray chứa key là position của những item mà chúng ta đã select và value sẽ là true.

Và tôi có phương thức lấy ra những item đã select trong listview như sau:

Ngoài ra chúng ta có thể lấy ra tổng số item mà chúng ta đã chọn bằng

Check và unCheck tất cả item có trong ListView

Bạn có thể check một item trên ListView sử dụng phương thức setItemChecked(position, value)

Để check tất cả các item các phải phải duyệt qua tất các các phần tử có trong adapter và sử dụng phương thức trên để setItemChecked cho từng item.

ListView Single Selection

File activity_list_view_single_seletion.xml

File ListViewSingleSelectionActivity.java

Tạo Adapter cho ListView Single Selection

Layout resource bạn phải truyền là layout của hệ thống android.R.layout.simple_list_item_single_choice file này có nội dung như sau:

Sau đó bạn phải set mode cho ListView sử dụng method setChoiceMode

Lấy ra item đã select

Khác với Multiple Selection thì để lấy ra item đã select bạn sử dụng phương thức getCheckedItemPosition của ListView

Phương thức này trả về vị trí của item mà bạn đã select.

Bạn cũng có thể check một item sử dụng phương thức setCheckedItem giống như trường hợp sử dụng ListView Multiple Selection.

Kết luận

Qua bài viết này tôi hy vọng giúp ích được cho các bạn trong học tập cũng như công việc khi sử dụng ListView này. Nếu có thắc mắc nào trong bài viết có thể để lại bình luận bên dưới hoặc liên hệ fanpage Eitguide để được giải đáp.

 

3 thoughts on “ListView Multiple Selection Và ListView Single Selection”

  1. Bây giờ em muốn Custom cái MultipleSelection thì phải làm thế nào ạ?
    Ví dụ thay vì chỉ có text và checkbox thì e muốn làm 1 cái image nữa!

    1. Bạn có thể tạo một Custom_adapter của riêng bạn. Lên gg search CustomAdapter là ra cách sử dụng nó . Rồi truyền cho listView của bạn customAdapter vừa tạo.

  2. cái phần ListView multiple sai nhá, trong vòng lặp for nên thêm điều kiện if (sparseBooleanArray.valueAt(i))

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.