이번 시간에는 Room을 이용해서 DB에 데이터 등록하는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정
[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정
안드로이드에서 앱 내부에 데이터를 관리하는 기능을 하는 Room 사용법에 대하여 알아보겠습니다. 이번 시간에는 기본 설정을 해보겠습니다. 아래 링크를 들어가시면 Room에 대한 상세한 정보를
aries574.tistory.com
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.google.android.material:material:1.6.0'
kapt("androidx.room:room-compiler:$roomVersion")
( res -> value -> themes)
<style name="Theme.DBRoom" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity
액티비티명: InsertActivity
- 설명 -
1. 이름과 나이 입력을 위한 EditText
2. 데이터 저장을 하기 위한 Button
<?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=".InsertActivity">
<EditText
android:id="@+id/name_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이름"
android:inputType="text"/>
<EditText
android:id="@+id/age_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/name_edit"
android:hint="나이"
android:inputType="number"/>
<Button
android:id="@+id/save_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/age_edit"
android:layout_centerHorizontal="true"
android:text="저장"/>
</RelativeLayout>
- 설명 -
1. String sName = nameEdit.getText().toString();
String sAge = ageEdit.getText().toString();
이름과 나이를 변수에 넣는다.
2. insertUser(sName, sAge);
입력한 정보를 insertUser()에 넘겨줌
3. db.userDao().insertUser(user)
DB 생성해서 입력한 정보 등록
4. setResult(Activity.RESULT_OK)
호출한 Activity에 값을 돌려준다.
class InsertActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_insert)
val nameEdit: EditText = findViewById(R.id.name_edit)
val ageEdit: EditText = findViewById(R.id.age_edit)
val saveBtn: Button = findViewById(R.id.save_btn)
saveBtn.setOnClickListener {
val sName = nameEdit.text.toString()
val sAge = ageEdit.text.toString()
//사용자 등록
insertUser(sName, sAge)
}
}
private fun insertUser(name: String, age: String){
val user = User(null, name, age)
var db: AppDatabase? = AppDatabase.getDatabase(applicationContext)
db?.userDao()?.insertUser(user)
//상태값을 돌려준다.
setResult(Activity.RESULT_OK)
//액티비티 닫기
finish()
}
}
- 설명 -
1. 사용자 리스트를 보여주기 위한 RecyclerView
2. 사용자 등록 화면으로 넘어가기 위한 FloatingActionButton
3. 아이콘 res -> drawable
<?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">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/insert_btn"
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:tint="@android:color/white"
app:srcCompat="@drawable/ic_add"/>
</RelativeLayout>
- 설명 -
1. loadUserList() 사용자 정보 조회 구현
2. activityResult 사용자 등록 후 전달받은
데이터에 의해 사용자 조회 기능 구현
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val insertBtn: FloatingActionButton = findViewById(R.id.insert_btn)
insertBtn.setOnClickListener {
val intent: Intent = Intent(this, InsertActivity::class.java)
activityResult.launch(intent)
}
//사용자 조회
loadUserList()
}
private val activityResult: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){
if(it.resultCode == RESULT_OK){
//돌아온 값이 OK라면
//사용자 조회
loadUserList()
}
}
//사용자 조회
private fun loadUserList(){
val db: AppDatabase? = AppDatabase.getDatabase(applicationContext)
val userList: List<User> = db?.userDao()!!.getAllUser()
if(userList.isNotEmpty()){
val position: Int = userList.size -1
Toast.makeText(this, "최근 등록자: " + userList.get(position).userName,
Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(this, "등록자 없음",
Toast.LENGTH_SHORT).show()
}
}
}
2022.06.17 - [안드로이드] - [안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part1 - 설정
[안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part1 - 설정
사용자가 정한 시간에 알람이 울리게 하는 방법에 대하여 알아보겠습니다. 이번 시간에는 알람 관련 클래스와 설정들을 만들어 보겠습니다. 목차 1. 알람 클래스 만들기 NotificationHelper.kt 2.
aries574.tistory.com
2022.06.06 - [안드로이드] - [안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성
[안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성
이번 시간부터 코틀린 버전 커스텀 달력을 만들어보겠습니다. 이번 포스팅은 화면 구성입니다. 목차 1. 실행 화면 2. dataBinding 설정 3. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. dataB..
aries574.tistory.com
2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
[안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
앞으로 TabLayout을 직접 만들어 애니메이션 기능까지 넣어보도록 하겠습니다. 이번 시간에는 화면 구성 및 설정을 만들어 보겠습니다. 목차 1. 실행 화면 2. dataBinding 설정 build.gradle 3. 테마 변경 t
aries574.tistory.com
[안드로이드 코틀린] Database Room 사용법 part4 - 수정 (0) | 2022.06.27 |
---|---|
[안드로이드 코틀린] Database Room 사용법 part3 - 리스트 (0) | 2022.06.26 |
[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정 (0) | 2022.06.24 |
[안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 화면 변경 버튼 만드는 방법 (0) | 2022.06.23 |
[안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 화면 변경 위치 표시(Indicator) 직접 만드는 방법 (0) | 2022.06.22 |
댓글 영역