Giới thiệu
Ví dụ này minh họa cách cập nhật dữ liệu của ListView một cách động (thêm, sửa, xóa item) mà không cần tải lại toàn bộ Activity.
Các bước thực hiện
Bước 1: Tạo dự án mới
Trong Android Studio: File → New Project → điền thông tin → Finish.
Bước 2: Giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: Logic chính (src/MainActivity.java)
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView listView;
ArrayAdapter<String> adapter;
ArrayList<String> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list);
dataList = new ArrayList<>();
// Dữ liệu mẫu ban đầu
for (int i = 1; i <= 10; i++) {
dataList.add("Item " + i);
}
adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, dataList);
listView.setAdapter(adapter);
// Ví dụ: Cập nhật item khi click
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Cập nhật dữ liệu tại vị trí được click
dataList.set(position, "Đã cập nhật: " + System.currentTimeMillis());
// Thông báo adapter dữ liệu đã thay đổi
adapter.notifyDataSetChanged();
}
});
// Ví dụ: Thêm item mới (có thể gán cho một nút bấm)
findViewById(R.id.btnAdd).setOnClickListener(v -> {
dataList.add(0, "Item mới " + System.currentTimeMillis());
adapter.notifyDataSetChanged();
});
}
}
Lưu ý: Ví dụ gốc thiếu code Java hoàn chỉnh. Đoạn code trên bổ sung đầy đủ logic cập nhật động thông qua adapter.notifyDataSetChanged().
Bước 4: Chạy ứng dụng
Kết nối thiết bị, nhấn Run. Màn hình hiển thị ListView với 10 item ban đầu. Nhấn vào bất kỳ item nào để thấy nội dung thay đổi ngay lập tức.


Nguyên lý cốt lõi
- Thay đổi dữ liệu trong
ArrayListgán cho Adapter. - Gọi
adapter.notifyDataSetChanged()để ListView vẽ lại. - Có thể dùng
notifyItemInserted(),notifyItemRemoved(),notifyItemChanged()cho hiệu ứng mượt mà hơn (yêu cầu RecyclerView).