상세 컨텐츠

본문 제목

[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part2 - 할 일 화면과 어댑터 클래스

안드로이드

by aries574 2022. 9. 15. 12:12

본문


이번 시간에는 ToDo List 만들기 두 번째 시간 할 일 화면어댑터 클래스를 만들어 보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.09.15 - [안드로이드] - [안드로이드 코틀린] SQLite ToDo List 만드는 방법 part2 - 할 일 화면과 어댑터 클래스

 

[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part2 - 할 일 화면과 어댑터 클래스

이번 시간에는 ToDo List 만들기 두 번째 시간 할 일 화면과 어댑터 클래스를 만들어 보겠습니다. 목차 1. 할 일 화면 task_item.xml 2. 어댑터 클래스 ToDoAdapter.kt 1. 할 일 화면 task_item.xml..

aries574.tistory.com


목차

1. 할 일 화면 task_item.xml
2. 어댑터 클래스 ToDoAdapter.kt


1. 할 일 화면 task_item.xml

 - 설명 -

 1. 할 일 목록을 보여주는 화면

 2. 할 일을 보여주는 CheckBox

<?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 Sample Task"/>
    </RelativeLayout>

</androidx.cardview.widget.CardView>

 


2. 어댑터 클래스 ToDoAdapter.kt

- 설명 -

 1. 데이터와 화면을 연결해주는 어댑터 클래스

 2. constructor(db: ToDoDB) : this() 

   생성자. 어댑터 생성 시 db 정보 받음

 3. onCreateViewHolder

   화면 설정

 4. onBindViewHolder

   데이터 설정

 5. getItemCount()

   데이터 개수 가져오는 함수

 6. setTasks

   할 일 리스트에 담는 함수

 7. removeItem

   할 일 삭제하는 함수

class ToDoAdapter(): RecyclerView.Adapter<ToDoAdapter.ViewHolder>() {

    lateinit var mDb: ToDoDB

    constructor(db: ToDoDB): this(){
        mDb = db
    }

    var todoList: ArrayList<ToDoModel> = ArrayList()

    /**
     * 화면 설정
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

        val inflater: LayoutInflater = LayoutInflater.from(parent.context)

        val view: View = inflater.inflate(R.layout.task_item, parent, false)

        return ViewHolder(view)
    }

    /**
     * 데이터 설정
     */
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        //아이템 담기
        val item: ToDoModel = todoList[position]

        //할일 내용
        holder.mCheckBox.text = item.task

        //상태값이 0이 아니면 체크
        holder.mCheckBox.isChecked = toBooelan(item.status)

        //체크박스 체크 이벤트
        holder.mCheckBox.setOnCheckedChangeListener(object: CompoundButton.OnCheckedChangeListener{

            override fun onCheckedChanged(comButton: CompoundButton?, isCheck: Boolean) {

                //체크 상태면 1 아니면 0
                if(isCheck){
                    mDb.updateStatus(item.id, 1)
                }else{
                    mDb.updateStatus(item.id, 0)
                }
            }
        })
    }

    /**
     * 상태값으로 체크상태 알아내기
     * 상태값이 0이 아니면 true 0이면 false
     */
    private fun toBooelan(n: Int) = n != 0

    /**
     * 데이터 갯수 가져오기
     */
    override fun getItemCount(): Int  = todoList.size

    /**
     * 할 일 목록 담기
     */
    fun setTask(todoList: ArrayList<ToDoModel>){

        this.todoList = todoList
        notifyDataSetChanged()
    }

    /**
     * 할 일 삭제
     */
    fun removeTask(position: Int){
        todoList.removeAt(position)
        notifyItemRemoved(position)
    }


    class ViewHolder(view: View): RecyclerView.ViewHolder(view){

        val mCheckBox: CheckBox = view.findViewById(R.id.m_check_box)
    }
}

2022.09.13 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity) 뒤로 가기 버튼 만드는 방법

 

[안드로이드 코틀린] 액티비티(Activity) 뒤로가기 버튼 만드는 방법

이번 시간에는 액티비티(Activity) 이동 후에 다시 이전 화면으로 돌아가는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 액티비티 만들기 3. 환경 설정 파일 AndroidManifest.xml 4. 메인 화면 acti

aries574.tistory.com

2022.09.08 - [안드로이드] - [안드로이드 코틀린] 달력(DatePicker) 코드에서 호출하는 방법

 

[안드로이드 코틀린] 달력(DatePicker) 코드에서 호출하는 방법

이번 시간에는 달력(DatePicker)을 화면이 아니라 코드에서 호출하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. 메인..

aries574.tistory.com

2022.09.02 - [안드로이드] - [안드로이드 코틀린] SeekBar RGB 글씨 색상 조절 만드는 방법

 

[안드로이드 코틀린] SeekBar RGB 글씨 색상 조절 만드는 방법

이번 시간에는 SeekBar를 이용해서 색상 RGB 조절하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. 메인 화면 activi..

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역