Wednesday, October 4, 2017

Xóa dòng Listview.

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