Giả sử bạn muốn xóa dòng của ListView, hãy tạo một nút có
tên là xóa dòng ở bên dưới.
Ta sửa mảng dữ liệu thành ArrayList như sau.
Đầu tiên khai báo mảng
ArrayList<String> qua2 = new ArrayList<String>();
Tiếp theo thêm các phần tử vào mảng.
qua2.add("Pear");
qua2.add("Banana");
qua2.add("Cashew");
qua2.add("Orange");
qua2.add("Water melon");
qua2.add("Peach");
qua2.add("Grape");
qua2.add("Mango");
qua2.add("Plum");
Sửa khai báo Adapter sang mảng qua2.
adapter = new
ArrayAdapter<String>(forth.this,
android.R.layout.simple_list_item_checked,
qua2);
Vào class khai báo nút, tham chiếu địa chỉ.
Ta khai báo một biến đếm có tên dem=0 để biết nếu người
dùng đã ấn chọn dòng chưa. Cho biến này vào trong lệnh onItemClick
của ListView, có chạm dòng thì dem=1;
Code trong nút, ta sẽ kiểm tra xem giá trị biến dem ra
sao, thông báo nếu chưa ấn dòng, nếu có ấn rồi thì xóa dòng đi.
b1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (dem == 0) {
Toast.makeText(forth.this,"Bạn chưa
chọn dòng", Toast.LENGTH_SHORT).show();
} else {
SparseBooleanArray checked = lv.getCheckedItemPositions();
for (int i = 0; i < lv.getCount();
i++) {
if (checked.get(i)
== true) {
qua2.remove(i);
}
adapter.notifyDataSetChanged();
}
lv.clearChoices();
}
}
});
Chạy thử để thấy dòng đã xóa. Vì ta chỉ xóa mà không sửa
mảng qua2 nên nếu mở lại thì List vẫn đủ
dòng.
Để xóa mà lần sau mở lại nó mất dòng đi ta sẽ phải sửa cả
mảng, sẽ học bài sau.
No comments:
Post a Comment