ListView
hoạt động dựa trên các dữ liệu cơ bản trong Adapter
. Để xóa ListView
bạn cần phải làm hai việc:
- Xóa dữ liệu bạn đã đặt từ bộ điều hợp.
- Làm mới xem bằng cách gọi
notifyDataSetChanged
Ví dụ, xem bộ xương của SampleAdapter
dưới đây mà mở rộng BaseAdapter
public class SampleAdapter extends BaseAdapter {
ArrayList<String> data;
public SampleAdapter() {
this.data = new ArrayList<String>();
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// your View
return null;
}
}
Ở đây bạn có ArrayList<String> data
như dữ liệu cho Adaptor của bạn. Mặc dù bạn có thể không cần sử dụng ArrayList, bạn sẽ có thứ gì đó tương tự trong mã của mình để thể hiện dữ liệu trong ListView
Tiếp theo bạn cung cấp phương pháp xóa dữ liệu này, việc triển khai phương pháp này là xóa cấu trúc dữ liệu cơ bản
public void clearData() {
// clear the data
data.clear();
}
Nếu bạn đang sử dụng bất kỳ lớp con nào của Collection, họ sẽ có phương thức clear() mà bạn có thể sử dụng như trên.
Một khi bạn có phương pháp này, bạn muốn gọi clearData
và notifyDataSetChanged
trên onClick
của bạn do đó mã cho onClick
sẽ giống như thế:
// listView is your instance of your ListView
SampleAdapter sampleAdapter = (SampleAdapter)listView.getAdapter();
sampleAdapter.clearData();
// refresh the View
sampleAdapter.notifyDataSetChanged();
hãy chuyển động getCount, để xóa đi không như getCount – Abhi
listview.setAdapter (null); –
Cảm ơn bạn Abhi, điều đó thực sự hữu ích. Ghi đè phương thức getCount .... – slodeveloper