이번 시간에는 Room을 이용해서 DB에 데이터 등록하는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정
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 - 설정
2022.06.06 - [안드로이드] - [안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성
2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
[안드로이드 코틀린] 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 |
댓글 영역