이번 시간에는 ToDoList SQLite 할 일 목록
화면과 DB부분을 만들어 보겠습니다.
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.google.android.material:material:1.4.0'
- 설명 -
1. DB에 넣을 데이터의 그릇입니다.
2. id: 아이디, task: 할 일, status: 체크상태
2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법
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;
}
}
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)});
}
}
- 설명 -
1. 카드뷰로 화면을 만들고, 체크박스로 할 일 목록을
만듭니다.
<?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 - [안드로이드] - [안드로이드 스튜디오] 레이아웃 추가하는 방법
- 설명 -
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
2022.03.17 - [안드로이드] - [안드로이드] Firebase Storage 이미지 리스트 part2
[안드로이드] ToDoList SQLite 만드는 방법 part3 - 수정, 삭제 (0) | 2022.03.22 |
---|---|
[안드로이드] ToDoList SQLite 만드는 방법 part2 - 조회, 등록 (0) | 2022.03.21 |
[안드로이드] 간단한 할 일 목록(ToDoList) 쉽게 만드는 방법 (0) | 2022.03.19 |
[안드로이드] 이미지 원형으로 쉽게 표현하는 방법 (0) | 2022.03.18 |
[안드로이드] Firebase Storage 이미지 리스트 part2 (0) | 2022.03.17 |
댓글 영역