Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android에서 ListView를 동적으로 업데이트하는 방법

이 튜토리얼에서는 Android 앱에서 ListView를 동적으로 업데이트하는 방법을 예제를 통해 살펴봅니다. 목록의 특정 항목을 탭하면 해당 값이 실시간으로 변경되도록 구현해 보겠습니다.

1단계 — 새 프로젝트 생성

Android Studio에서 새 프로젝트를 만듭니다. 상단 메뉴에서 File ⇒ New Project로 이동한 뒤, 프로젝트 생성에 필요한 모든 세부 정보를 입력합니다.

2단계 — 레이아웃 구성

res/layout/activity_main.xml 파일에 다음 코드를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

위 코드에서는 세로 방향 LinearLayout 안에 ListView 하나를 배치했습니다.

3단계 — MainActivity 구현

src/MainActivity.java 파일에 다음 코드를 추가합니다.

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

   ListView list;
   ArrayList<String> arrayList = new ArrayList<>();
   ArrayAdapter<String> adapter;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      list = findViewById(R.id.list);

      // 초기 데이터 10개 추가
      for (int i = 1; i <= 10; i++) {
         arrayList.add("아이템 " + i);
      }

      adapter = new ArrayAdapter<>(this,
         android.R.layout.simple_list_item_1, arrayList);
      list.setAdapter(adapter);

      // 항목 클릭 시 해당 값을 100으로 동적 업데이트
      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> parent, View view,
                                 int position, long id) {
            arrayList.set(position, "100");
            adapter.notifyDataSetChanged();
            Toast.makeText(MainActivity.this,
               (position + 1) + "번째 항목이 100으로 변경되었습니다",
               Toast.LENGTH_SHORT).show();
         }
      });
   }
}

핵심 포인트: notifyDataSetChanged()

ListView를 동적으로 업데이트하는 핵심은 어댑터의 notifyDataSetChanged() 메서드입니다. 데이터 목록(ArrayList)의 값을 변경한 후 이 메서드를 호출하면 어댑터가 변경 사항을 감지하여 ListView 화면을 자동으로 갱신합니다.

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 실행(Run) 아이콘을 클릭하고, 배포할 모바일 기기를 선택합니다. 그러면 기기에 다음과 같은 기본 화면이 나타납니다.

Android에서 ListView를 동적으로 업데이트하는 방법

이제 목록에서 아무 항목이나 클릭하면 아래와 같이 해당 값이 100으로 업데이트됩니다.

Android에서 ListView를 동적으로 업데이트하는 방법