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

Android에서 ListView의 ArrayList에 요소를 삽입하는 방법

이 튜토리얼에서는 Android 앱에서 사용자 입력을 ArrayList에 저장하고 이를 ListView에 표시하는 방법을 단계별로 알아봅니다. EditText에 이름을 입력하고 저장 버튼을 누르면 데이터가 ArrayList에 추가되며, 새로고침 버튼으로 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"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:orientation = "vertical">
    <EditText
        android:id = "@+id/name"
        android:layout_width = "match_parent"
        android:hint = "Enter Name"
        android:layout_height = "wrap_content" />
    <LinearLayout
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content">
        <Button
            android:id = "@+id/save"
            android:text = "Save"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" />
        <Button
            android:id = "@+id/refresh"
            android:text = "Refresh"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" />
    </LinearLayout>
    <ListView
        android:id = "@+id/listView"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content">
    </ListView>
</LinearLayout>

위 레이아웃은 세 부분으로 구성됩니다. 먼저 사용자가 이름을 입력할 수 있는 EditText가 있고, 그 아래에는 Save(저장) 버튼과 Refresh(새로고침) 버튼이 나란히 배치되어 있습니다. 마지막으로 입력된 데이터를 목록 형태로 보여주는 ListView가 위치합니다.

3단계: MainActivity 작성

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

package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
    Button save, refresh;
    EditText name;
    ArrayAdapter arrayAdapter;
    private ListView listView;
    ArrayList array_list;
    @Override
    protected void onCreate(Bundle readdInstanceState) {
        super.onCreate(readdInstanceState);
        setContentView(R.layout.activity_main);
        array_list = new ArrayList();
        name = findViewById(R.id.name);
        listView = findViewById(R.id.listView);
        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                arrayAdapter.notifyDataSetChanged();
                listView.invalidateViews();
                listView.refreshDrawableState();
            }
        });
        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty()) {
                    array_list.add(name.getText().toString());
                    arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
                    listView.setAdapter(arrayAdapter);
                    Toast.makeText(MainActivity.this, "Inserted", Toast.LENGTH_LONG).show();
                } else {
                    name.setError("Enter NAME");
                }
            }
        });
    }
}

코드 동작 원리

핵심 로직을 살펴보면 다음과 같습니다.

저장 버튼 클릭 시: EditText의 값이 비어 있는지 먼저 확인합니다. 값이 존재하면 array_list.add() 메서드를 통해 해당 문자열을 ArrayList에 추가하고, ArrayAdapter를 새로 생성하여 ListView에 연결합니다. 저장이 완료되면 "Inserted"라는 토스트 메시지가 화면에 표시됩니다. 반면 입력값이 비어 있다면 setError()를 통해 사용자에게 이름 입력을 요구하는 오류 메시지를 보여줍니다.

새로고침 버튼 클릭 시: notifyDataSetChanged(), invalidateViews(), refreshDrawableState()를 호출하여 ListView의 화면을 갱신하고 최신 데이터를 반영합니다.

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결한 상태라고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run 아이콘을 클릭하세요. 실행 옵션에서 연결된 모바일 기기를 선택하면, 기기 화면에 앱의 기본 화면이 나타납니다.

Android에서 ListView의 ArrayList에 요소를 삽입하는 방법

위 실행 결과에서 확인할 수 있듯이, 사용자가 입력한 이름이 ArrayList에 순차적으로 저장되고, 그 내용이 ListView에 목록 형태로 출력됩니다. 이처럼 ArrayAdapter와 ArrayList를 조합하면 동적인 리스트 데이터를 손쉽게 화면에 표시할 수 있습니다.