Các bước làm việc với ListView
- Chuẩn bị nguồn dữ liệu: Đã có trong CSDL SQLite
- Tạo lớp đối đượng DTO để làm việc với từng phần tử: Đã có
- Tạo ListView trong layout để hiển thị danh sách: Đã có ở phần trước
- Tạo layout cho 1 phần tử trong listView để hiển thị thông tin của 1 bản ghi: Chưa có
- Tạo Adapter để đổ dữ liệu lên View: Chưa có
- Lấy dữ liệu từ SQLite đổ vào Adapter: Chưa có
- Gắn Adapter vào ListView: Chưa có
Chúng ta đang làm việc với bảng Lớp nên sẽ tạo 1 layout cho phần tử lớp
- Trong thư mục res/layout tạo 1 file resource layout xml mới đặt tên là: custom_list_item_lop.xml
- Nội dung file như sau:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="10dp"
android:background="#00BCD4"
>
<TextView
android:id="@+id/tv_id_lop"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_ten_lop"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_nganh"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
- Tạo Adapter
- Trong thư mục java tạo package mới đặt tên là Adapter để chứa các file code chuyên về adapter
- Tạo 1 file TbLopAdapter.java trong thư mục Adapter và cho lớp này kế thừa lớp BaseAdapter
- Sau đó overwrite các phương thức theo mặc định bằng cách bấm chuột vào tên lớp sau đó bấm Alt + Enter để hiển thị lựa chọn thì chọn Implement methods --> chọn tất cả 4 phương thức được gợi ý ra.
- Trong lớp này khai báo 1 thuộc tính chứa danh sách kiểu dữ liệu ArrayList và để là final:
final ArrayList<TbLop> tbLopArrayList;
Sau khi viết xong dòng này phần mềm gợi ý tạo lớp khởi tạo thì bấm vòa dòng này và bấm Alt + Enter --> chọn Add constructor params
là được hàm khởi tạo.
-
- Sửa lại hàm getCount() thành
return tbLopArrayList.size();
-
- Sửa lại hàm getItem
return tbLopArrayList.get(position);
-
- Sửa lại hàm getItemId
return tbLopArrayList.get(position).getId_lop();
-
- Viết code cho hàm getView
Đến bước này là xong phần Adapter
- Lấy dữ liệu trong database đổ vào adapter
- Trong file TbLopDAO tạo thêm hàm GetAll() lấy dữ liệu như sau:
- Gắn dữ liệu lấy được vào Adapter và đưa lên Listview
- Quay sang MainActivity khai báo thêm 2 thuộc tính:
TbLopAdapter tbLopAdapter;
ListView listViewLop ;
-
- Xem phần bổ sung trong ảnh
- Hiển thị lại dữ liệu trên listview khi thêm mới
Trong hàm AddNew ở lớp MainActivity, tìm đến chỗ thông báo thêm mới thành công, sửa thêm code như sau
Chạy và thử nghiệm thêm mới:
- Chạy thử, thêm mới
- Tắt hoàn toàn ứng dụng
- Mở lại ứng dụng xem có bản ghi vừa thêm hay không, nếu có là thành công.