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

Android에서 TreeSet에 저장된 데이터를 삭제하는 방법 – 단계별 예제

이 예제는 Android 앱에서 TreeSet에 저장된 데이터를 삭제하는 방법을 단계별로 보여줍니다. 사용자가 입력한 이름을 TreeSet에 추가하고, 삭제 버튼을 누르면 해당 요소를 TreeSet에서 제거한 뒤 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" />
        <Button
            android:id="@+id/delete"
            android:text="Delete"
            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, Delete), 그리고 데이터를 표시할 ListView가 포함되어 있습니다.

  • Save 버튼: 입력한 이름을 TreeSet에 저장하고 ListView에 표시합니다.
  • Refresh 버튼: ListView를 다시 그려 최신 상태로 갱신합니다.
  • Delete 버튼: 입력 필드에 작성된 이름과 일치하는 항목을 TreeSet에서 제거합니다.

3단계: MainActivity.java 코드 작성

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.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;

public class MainActivity extends AppCompatActivity {
    EditText name;
    ArrayAdapter arrayAdapter;
    ArrayList<String> array_list;
    Set set = new TreeSet();
    private ListView listView;

    @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.delete).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty()) {
                    set.remove(name.getText().toString());
                    array_list.clear();
                    array_list.addAll(set);
                    arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
                    listView.setAdapter(arrayAdapter);
                    Toast.makeText(MainActivity.this, "Deleted", Toast.LENGTH_LONG).show();
                }
            }
        });
        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty()) {
                    set.add(name.getText().toString());
                    array_list.clear();
                    array_list.addAll(set);
                    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");
                }
            }
        });
    }
}

코드 동작 원리

핵심은 TreeSet의 remove() 메서드입니다. 삭제 버튼을 클릭하면 다음 순서로 처리됩니다.

  1. 입력 필드가 비어 있는지 확인합니다.
  2. set.remove()를 호출해 입력된 이름과 일치하는 요소를 TreeSet에서 제거합니다.
  3. ArrayList를 비운 뒤 TreeSet의 내용을 다시 복사합니다.
  4. 새로운 ArrayAdapter를 생성해 ListView에 연결함으로써 화면을 갱신합니다.
  5. "Deleted"라는 토스트 메시지를 표시해 삭제가 완료되었음을 알립니다.

참고로 TreeSet은 내부적으로 요소를 자동 정렬하며 중복을 허용하지 않기 때문에, ListView에는 항상 정렬된 고유한 값만 표시됩니다.

앱 실행 및 결과 확인

앱을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run Android에서 TreeSet에 저장된 데이터를 삭제하는 방법 – 단계별 예제 아이콘을 클릭하세요. 실행 옵션 목록에서 본인의 모바일 기기를 선택하면, 기기 화면에 앱이 표시됩니다.

Android에서 TreeSet에 저장된 데이터를 삭제하는 방법 – 단계별 예제

위 결과에서 두 개의 레코드가 TreeSet에 삽입되어 ListView에 정렬된 형태로 표시된 것을 확인할 수 있습니다.

Android에서 TreeSet에 저장된 데이터를 삭제하는 방법 – 단계별 예제

이제 이름을 입력한 후 Delete 버튼을 클릭하면, 위 이미지처럼 해당 레코드가 ListView에서 즉시 삭제되는 것을 확인할 수 있습니다.