Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách cập nhật động ListView trên Android

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.

Cách cập nhật động ListView trên Android

Cách cập nhật động ListView trên Android

Nguyên lý cốt lõi

  • Thay đổi dữ liệu trong ArrayList gá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).