자바 안드로이드 앱개발 강좌, 개선된 할 일 목록 앱 만들기

본 글에서는 자바를 활용하여 안드로이드 플랫폼에서 개선된 할 일 목록(To-Do List) 앱을 개발하는 방법에 대해 설명합니다. 이 강좌는 초급자부터 중급자까지 모두가 따라할 수 있도록 상세하게 설명하겠습니다. 우리는 기초적인 할 일 목록 앱을 만들고, 기능을 개선하여 사용자에게 더 나은 경험을 제공하는 방법을 배웁니다.

목차

1. 프로젝트 설정

Android Studio를 열고 새로운 프로젝트를 생성합니다. “Empty Activity”를 선택하고, 프로젝트 이름을 “ToDoListApp”, 패키지 이름을 “com.example.todolist”로 설정합니다.

Kotlin 대신 Java를 선택하여 프로젝트를 생성합니다. 이렇게 설정된 프로젝트에서 기본적인 구조가 자동으로 생성됩니다.

2. 기본 사용자 인터페이스 디자인

사용자 인터페이스는 주로 XML을 사용하여 설계하며, 아래와 같은 레이아웃을 구성합니다. ‘activity_main.xml’ 파일을 열고 아래 코드를 추가합니다.

        
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <EditText
                android:id="@+id/editTextTask"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="할 일을 입력하세요"/>

            <Button
                android:id="@+id/buttonAdd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="추가"/>

            <ListView
                android:id="@+id/listViewTasks"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>

        </LinearLayout>
        
        

위 코드에서 EditText는 사용자가 할 일을 입력할 수 있는 텍스트 필드를 제공하며, Button은 할 일을 목록에 추가하는 버튼입니다. ListView는 추가된 할 일 목록을 표시합니다.

3. 데이터 저장소 및 관리

할 일 목록을 저장하기 위해 List와 같은 자료구조를 사용합니다. 리스트에 추가할 항목을 모델 클래스인 “Task”로 정의합니다.

        
        public class Task {
            private String task;
            private boolean isCompleted;

            public Task(String task) {
                this.task = task;
                this.isCompleted = false;
            }

            public String getTask() {
                return task;
            }

            public boolean isCompleted() {
                return isCompleted;
            }

            public void completeTask() {
                isCompleted = true;
            }
        }
        
        

이제 MainActivity.java에서 입력된 할 일을 목록에 추가하기 위한 로직을 구현합니다. ListView와 ArrayAdapter를 사용하여 리스트를 표시합니다.

4. 할 일 추가 및 삭제 기능 구현

MainActivity.java 파일을 열고 할 일을 추가하는 기능을 구현합니다. 아래 코드를 추가하세요.

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

        import androidx.appcompat.app.AppCompatActivity;

        import java.util.ArrayList;

        public class MainActivity extends AppCompatActivity {

            private ArrayList<Task> taskList;
            private ArrayAdapter<String> adapter;
            private EditText editTextTask;
            private ListView listViewTasks;

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

                editTextTask = findViewById(R.id.editTextTask);
                Button buttonAdd = findViewById(R.id.buttonAdd);
                listViewTasks = findViewById(R.id.listViewTasks);

                taskList = new ArrayList<>();
                adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, new ArrayList<>());
                listViewTasks.setAdapter(adapter);

                buttonAdd.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String taskInput = editTextTask.getText().toString();
                        if (!taskInput.isEmpty()) {
                            Task task = new Task(taskInput);
                            taskList.add(task);
                            adapter.add(task.getTask());
                            editTextTask.setText("");
                        }
                    }
                });

                listViewTasks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Task task = taskList.get(position);
                        if (task.isCompleted()) {
                            task.completeTask();
                        } else {
                            task.completeTask();
                        }
                        adapter.notifyDataSetChanged();
                    }
                });
            }
        }
        
        

위의 코드에서 사용자가 입력한 할 일을 확인하여 리스트에 추가하는 기능과 리스트 항목을 클릭 시 완료 여부를 토글하는 기능을 구현했습니다. 이를 통해 사용자는 할 일의 상태를 쉽게 관리할 수 있습니다.

5. 할 일 완료 표시 기능 구현

사용자가 할 일을 완료했을 때 사용자 인터페이스를 개선하기 위해서 항목의 배경색을 변경하는 방법을 추가합니다. ArrayAdapter에서 getView 메서드를 재정의하여 완료된 항목의 색상을 변경합니다.

        
        import android.content.Context;
        import android.graphics.Color;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.TextView;

        import java.util.List;

        public class TaskAdapter extends ArrayAdapter<Task> {

            public TaskAdapter(Context context, List<Task> tasks) {
                super(context, 0, tasks);
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                Task task = getItem(position);
                if (convertView == null) {
                    convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
                }
                TextView textView = convertView.findViewById(android.R.id.text1);
                textView.setText(task.getTask());
                if (task.isCompleted()) {
                    textView.setTextColor(Color.GRAY);
                } else {
                    textView.setTextColor(Color.BLACK);
                }
                return convertView;
            }
        }
        
        

MainActivity.java에서 adapter를 TaskAdapter로 교체해야 합니다. 이제 사용자는 완료된 항목의 색상이 회색으로 변경되어 쉽게 확인할 수 있습니다.

6. 앱의 UI 개선

앱의 사용자 경험을 향상시키기 위해 다양한 UI 요소를 추가할 수 있습니다. 예를 들어, 사용자에게 할 일을 입력하라는 안내 메시지를 추가하거나, 사용자가 할 일을 완료한 후 확인 메시지를 표시하는 방법이 있습니다. 추가로, RecyclerView를 사용하면 효율적인 데이터 관리를 할 수 있습니다.

        
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerViewTasks"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
        
        

RecyclerView를 사용하면 더 많은 데이터 항목을 효율적으로 처리할 수 있습니다. 간단한 아이템 클릭 애니메이션을 추가하여 사용자가 앱을 사용하면서 더 나은 경험을 할 수 있도록 만들어보세요.

7. 앱 배포 및 마무리

앱 개발을 완료하고 나면, Google Play Store에 배포하여 사용자에게 제공할 수 있습니다. AndroidManifest.xml 파일에 필요한 권한을 설정하고, 앱을 빌드하여 APK 파일을 생성합니다.

배포 후 사용자 피드백을 통해 앱을 지속적으로 개선할 수 있으며, 추가적인 기능을 업데이트 시 사용자 경험을 더욱 향상시킬 수 있습니다.

결론

오늘은 자바와 Android Studio를 활용하여 개선된 할 일 목록 앱을 개발하는 과정을 살펴보았습니다. 여러분이 배운 내용이 실제 앱 개발에 도움이 되길 바랍니다. 추가적인 기능 구현으로 앱을 더욱 발전시키고 사용자에게 유용한 도구로 만들 수 있습니다. 다음 강좌에서는 더 심화된 주제를 다룰 예정이니 많은 기대 부탁드립니다.