본문 바로가기
안드로이드 자바

[Android][Java] 간단한 ToDoList(할 일 목록) 만들기

by teamnova 2023. 2. 28.
728x90

안녕하세요.

오늘은 아주 간단하게 안드로이드에서 할 일 목록을 만드는 방법에 대해 알아보겠습니다!

 

먼저 리스트뷰에 들어갈 아이템 레이아웃을 만들어줍니다.

 

todolist_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:padding="20dp"
    android:text="textView"
    android:textSize="20dp"
    android:textStyle="bold">
</TextView>

 

다음으로 액티비티 화면 레이아웃을 만들어줍니다.

 

todolist.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/bottom_section"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/white"
        android:padding="10dp">

        <EditText
            android:id="@+id/edit_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:textSize="17dp"
            android:layout_weight="1" />

        <Button
            android:id="@+id/add_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="17dp"
            android:text="추가" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom_section"
        android:background="#eee">

        <ListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</RelativeLayout>

1. 하단 EditText에 할 일을 적은 후 추가 버튼을 누릅니다.

2. 리스트뷰에 추가된 할 일을 목록 형태로 보여줍니다.

 

다음으로 자바 파일입니다.

 

TodoList.java

import android.graphics.Paint;
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 android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

public class TodoList extends AppCompatActivity {

    ArrayList<String> toDoList;
    ArrayAdapter<String> adapter;
    ListView listView;
    EditText editText;

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


        //초기화
        toDoList = new ArrayList<>();
        adapter = new ArrayAdapter<String>(this, R.layout.todolist_item, toDoList);
        listView = findViewById(R.id.list_view);
        editText = findViewById(R.id.edit_text);

        //어뎁터 적용
        listView.setAdapter(adapter);

        //할일추가 버튼 이벤트
        Button addBtn = findViewById(R.id.add_btn);
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addItemToList();
            }
        });

        //리스트 아이템 클릭 했을때 이벤트
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                TextView textView = (TextView) view;

                //취소선 넣기
                textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
            }
        });
    }//onCreate

    //할일 추가
    public void addItemToList(){

        //아이템 등록
        toDoList.add(editText.getText().toString());

        //적용
        adapter.notifyDataSetChanged();;

        //입력창 초기화
        editText.setText("");
    }

}//TodoList.java

코드의 흐름은 다음과 같습니다.

 1. 할일을 ArrayList에 등록합니다.

 2. 어뎁터는 리스트뷰에 적용이 되어, 할일을 등록하면 자동으로 화면에 할 일을 보여줍니다.

 3. 리스트뷰의 아이템을 클릭하면, 취소 줄(완료 표시)이 생깁니다.

 

실행화면 입니다.

 

오늘 준비한 내용은 여기까지 입니다.

궁금한 점은 언제든 댓글로 남겨주세요.

감사합니다!