Listview trong android (Bài 6)

Listview trong android là một thành phần dùng để nhóm nhiều mục (item) và hiển thị chúng trong danh sách cuộn theo chiều dọc. Danh sách các mục được tự động chèn vào danh sách bằng cách sử dụng một adapter chứa nội dung từ một nguồn như một mảng hoặc cơ sở dữ liệu.

listview-trong-android-1

Listview trong android – Giới thiệu Array Adapter

Bạn có thể sử dụng adapter này khi nguồn dữ liệu của bạn là một mảng. Mặc định ArraryAdapter tạo một view cho mỗi phần tử trong mảng bằng phương thức toString() và đặt nội dung vào một TextView. 

Giả sử bạn có một mảng string chứa dữ liệu được dùng để hiển thị trong một ListView. Khởi tạo một đối tượng ArrayAdapter  sử dụng phương thức khởi tạo, chỉ định layout và mảng string (stringArray).

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

Listview trong android – Các bước thực hiện

Bước 1: Chuẩn bị dữ liệu (Dữ liệu được chứa trong mảng hoặc trong ArrayList)

Bước 2: Tạo đối tượng ArrayAdapter liên kết layout mặc định và nguồn dữ liệu

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

Bước 3: Gắn ArrayAdapter vào ListView

listview.setAdapter(aa);

Bước 4: Xử lý sự kiện nếu có

Listview trong android – Ví dụ mẫu

Bước 1: Tạo một Empty Activity và đặt tên ListViewActivityDemo

Bước 2: Thiết kế layout cho Activity

listview trong android

Bước 3: Viết xử lý cho Activity

public class ListViewActivityDemo extends AppCompatActivity {

    ArrayList al;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view_demo);

        // Bước 1: Chuẩn bị dữ liệu
        al = new ArrayList();
        al.add("Nguyễn Văn Xuân");
        al.add("Trần Hạ");
        al.add("Lê Thị Thu");
        al.add("Huỳnh Đông");

        // Bước 2: Khởi tạo đối tượng ArrayAdapter
        ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_list_item_1, al);

        // Bước 3: Gắn ArrayAdapter vào ListView
        ListView lvDemo = (ListView)findViewById(R.id.lvDemo);
        lvDemo.setAdapter(aa);
        
        // Bước 4: Xử lý sự kiện long click
        lvDemo.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                String data = (String) al.get(i);
                Toast.makeText(ListViewActivityDemo.this,"Bạn đã chọn " + data, Toast.LENGTH_SHORT).show();
                return false;
            }
        });
    }
}

Bước 4: Build và run

listview-trong-android-4

Long click (chạm và giữ) một dòng trong ListView. Ví dụ chạm và giữ dòng đầu tiên.

listview-trong-android-5

Listview trong android – Bài tập thực hành

Xây dựng ứng dụng quản lý thông tin nhân viên. Ứng dụng cho phép quản lý các thông tin về nhân viên như  họ tên, ngày tháng năm sinh, nơi sinh, địa chỉ email.

listview-trong-android-3

Khi chọn vào nút “>>>”, hiển thị Date picker cho phép chọn ngày tháng năm

listview-trong-android-6

Khi người dùng chọn vào nút “ADD”, thông tin sẽ được hiển thị vào ListView

listview-trong-android-7

Khi người dùng long click vào một dòng trong ListView, hiển thị hộp thoại xác nhận. Nếu người dùng chọn “YES”, thông tin của nhân viên tương ứng với dòng được chọn bị xoá ra khỏi ListView

listview-trong-android-8

Khi người dùng chọn nút “SAVE”, lưu thông tin từ ListView vào tập tin employees.txt.

Lưu ý:

  1. Mã nhân viên được tăng tự động, bắt đầu là 1.
  2. Tên nhân viên, ngày tháng năm sinh, nơi sinh bắt buộc nhập.
  3. 3. Địa chỉ email phải nhập đúng định dạng (có @).