본문 바로가기
Kotlin/Kotlin 팁

ANDROID SQLite 데이터 베이스 사용 방법 2편

by MonoSoft 2020. 9. 29.
728x90
반응형

ANDROID SQLite 데이터 베이스 사용 방법 2편

 

아래와 같이 Paintext 와 버튼을 하나씩 추가후 적당히 조정 후 text와 레이아웃을 조정한다.

단. text는 꼭 values를 활용할것!!!

 

아래와 같이 RecycleView도 추가하고 레이아웃 조정과 ID 설정을 해준다.

 

 

아래와 같이 새로운 레이아웃을 추가후 이름을 item_recycler로 지정한다.

 

새로운 레이아웃에 아래와 같이 설정을 해준다.

 

메인 액티비티에 미리보기 설정 

 

또 엑티비에 새로운 클래스를 추가한다 어탭터 클래스이다.

 

다음과 같이 코딩해준다.

 

package com.monosoft.sqlitesample

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.item_recycler.view.*
import java.text.SimpleDateFormat

class RecyclerAdapter : RecyclerView.Adapter<Hoder>() {

var listData = mutableListOf<Memo>()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Hoder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_recycler,parent,false)

return Hoder(view)
}

override fun onBindViewHolder(holder: Hoder, position: Int) {
//실제 그려주는 리스너
val memo = listData.get(position)
holder.setMemo(memo)
}

override fun getItemCount(): Int {
return listData.size
}
}

class Hoder(itemView : View) : RecyclerView.ViewHolder(itemView) {
fun setMemo(memo:Memo) {
itemView.textNo.text = "${memo.no}"
itemView.textContent.text = "${memo.content}"

//포맷에 맞게 리턴됨
val sdf = SimpleDateFormat("yyyy/mm/dd hh:mm")
val datetime = sdf.format(memo.datetime)
itemView.textDatetime.text = "$datetime"
}
}

 

메인 액티비티에도 코딩해준다.

 

package com.monosoft.sqlitesample

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

val DB_NAME = "sqlite.sql"
val DB_VERSION = 1

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val helper = SqliteHelper(this,DB_NAME,DB_VERSION)

val adapter = RecyclerAdapter()

val memos = helper.selectMemo()
adapter.listData.addAll(memos)
recyclerMemo.adapter = adapter
recyclerMemo.layoutManager = LinearLayoutManager(this)

buttonSave.setOnClickListener {
val content = editMemo.text.toString()
if(content.isNotEmpty()) {
val memo = Memo(null,content,System.currentTimeMillis())
helper.insertMemo(memo)
//기존 작성글 삭제
editMemo.setText("")
//목록 갱신
adapter.listData.clear()
adapter.listData.addAll(helper.selectMemo())
adapter.notifyDataSetChanged()
//나중에는 변경된것만 갱신
}
}

}
}

 

결과화면

 

 

728x90
반응형

댓글