상세 컨텐츠

본문 제목

[안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB

안드로이드

by aries574 2022. 3. 20. 20:35

본문


이번 시간에는 ToDoList SQLite 할 일 목록

화면과 DB부분을 만들어 보겠습니다. 


목차

1. 실행 화면

2. 라이브러리 등록

3. ToDo 클래스 만들기

4. ToDo DB 만들기

5. ToDo 화면 만들기

6. 메인 화면 구성 activity_main.xml


1. 실행 화면

 

2. 라이브러리 등록

build.gradle(Module:프로젝트명:app)

dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.

implementation 'com.google.android.material:material:1.4.0'

 

3. ToDo 클래스 만들기

 - 설명 - 

 1. DB에 넣을 데이터의 그릇입니다.

 2. id: 아이디, task: 할 일, status: 체크상태

2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법

 

[안드로이드 스튜디오] 자바 클래스 생성하는 방법

이번 시간에는 안드로이드 스튜디오(AndroidStudio)에서 자바 클래스 생성하는 방법을 알아보겠습니다. 기본으로 안드로이드 스튜디오 프로젝트를 생성하면 아래 화면처럼 MainActivity가 기본으로 생

aries574.tistory.com

public class ToDoModel {

    private int id;
    private String task;
    private int status;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}

 

4. ToDoDB 만들기

ToDoDB.java

public class ToDoDB extends SQLiteOpenHelper {

    private SQLiteDatabase db;

    private Context context;
    public static final String DATABASE_NAME = "todoList.db";
    public static final int DATABASE_VERSION = 1;

    public static final String TABLE_NAME = "todo_list";
    public static final String COLUMN_ID = "id";
    public static final String COLUMN_TASK = "task";
    public static final String COLUMN_STATUS = "status";

    public ToDoDB(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String query = "CREATE TABLE " + TABLE_NAME +
                " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                COLUMN_TASK + " TEXT, " +
                COLUMN_STATUS + " INTEGER)";
        db.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public void openDatabase(){

        db = this.getWritableDatabase();
    }

    /**
     * 할일 전체 가져오기
     * @return
     */
    public ArrayList<ToDoModel> getAllTasks(){

        ArrayList<ToDoModel> taskList = new ArrayList<>();
        Cursor cursor = null;

        String query = "SELECT * FROM " + TABLE_NAME;
        openDatabase();

        if(db != null){
            cursor = db.rawQuery(query, null);

            while (cursor.moveToNext()){

                ToDoModel task = new ToDoModel();

                task.setId(cursor.getInt(0));
                task.setTask(cursor.getString(1));
                task.setStatus(cursor.getInt(2));
                taskList.add(task);
            }
        }
        return taskList;
    }


    /**
     * 할일 추가
     * @param task 할일
     */
    public void AddTask(ToDoModel task){

        openDatabase();
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_TASK, task.getTask());
        cv.put(COLUMN_STATUS, 0);

        db.insert(TABLE_NAME, null, cv);

    }

    /**
     * 할일 상태 수정
     * @param id 아이디
     * @param status 상태
     */
    public void updateStatus(int id, int status){

        openDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_STATUS, status);

        db.update(TABLE_NAME, cv, "id=?", new String[]{String.valueOf(id)});

    }

    /**
     * 할일 수정
     * @param id 아이디
     * @param task 할일
     */
    public void updateTask(int id, String task){

        openDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TASK, task);
        db.update(TABLE_NAME, cv, "id=?", new String[]{String.valueOf(id)});

    }

    /**
     * 할일 삭제
     * @param id 아이디
     */
    public void deleteTask(int id){

        openDatabase();
        db.delete(TABLE_NAME, "id=?" , new String[]{String.valueOf(id)});
    }
}

 

5. ToDo 화면 만들기

 - 설명 -

 1. 카드뷰로 화면을 만들고, 체크박스로 할 일 목록을

 만듭니다. 

 task_list.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginHorizontal="16dp"
    android:layout_marginVertical="8dp"
    app:cardCornerRadius="8dp"
    app:cardElevation="4dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <CheckBox
            android:id="@+id/m_check_box"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:buttonTint="@android:color/holo_green_dark"
            android:text="This is an Sample Task" />
    </RelativeLayout>

</androidx.cardview.widget.CardView>

2022.01.01 - [안드로이드] - [안드로이드 스튜디오] 레이아웃 추가하는 방법

 

[안드로이드 스튜디오] 레이아웃 추가하는 방법

이번 시간에는 안드로이드 스튜디오에서 레이아웃 추가하는 방법을 알아보겠습니다. 안드로이드 프로젝트를 만들면 java폴더에는 MainActivity 파일이 있고, res -> layout 폴더에는 activity_main.xml 파일

aries574.tistory.com

 

 

6. 메인 화면 구성 activity_main.xml

- 설명 -

 1. 리스트를 보여주는 RecyclerView

 2. 입력을 하는 EditText, 등록을 하는 Button

 3. 입력 모드로 만들어주는 FloatingActionButton 

<?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:padding="10dp"
        android:visibility="gone">

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

        <androidx.appcompat.widget.AppCompatButton
            android:id="@+id/add_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:enabled="false"
            android:text="ADD" />
    </LinearLayout>

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

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="20dp"
        android:backgroundTint="@android:color/holo_green_dark"
        app:srcCompat="@drawable/ic_add"
        app:tint="@android:color/white" />
</RelativeLayout>

2022.03.16 - [안드로이드] - [안드로이드] Firebase Storage 이미지 업로드 part1

 

[안드로이드] Firebase Storage 이미지 업로드 part1

이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.

aries574.tistory.com

2022.03.17 - [안드로이드] - [안드로이드] Firebase Storage 이미지 리스트 part2

 

[안드로이드] Firebase Storage 이미지 리스트 part2

이번 시간에는 Firebase를 통해서 업로드한 이미지를 가져와서 리스트로 보여주는 방법을 알아보겠습니다. 이전에 했던 포스팅을 이어서 하니 먼저 보시면 됩니다. 2022.03.16 - [안드로이드] - [안드

aries574.tistory.com

2022.03.18 - [안드로이드] - [안드로이드] 이미지 원형으로 쉽게 표현하는 방법

 

[안드로이드] 이미지 원형으로 쉽게 표현하는 방법

이번 시간에는 이미지를 원형으로 보여줘야 하는 프로필 화면에서 쓸 수 있는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 Mai

aries574.tistory.com

반응형

관련글 더보기

댓글 영역