저번시간에는 프로젝트 만들고 파이어베이스 연동을 해봤고, 이번에는 이름과 나이를 적어서 버튼을 누르면 등록해보는 예제 코드를 짜볼것이다
먼저 viewbinding 설정을 할것이다
viewbinding 설정을 하는 이유는 findviewbyid없이 뷰 객체를 사용하기 위해서다
viewbinding을 사용함으로써 뷰객체에 바로 접근할수있다
build.gradle(app)에서 kotlinOptions 밑에 아래와같이 코드를 작성해준뒤 sync now를 눌러주면 viewbinding을 사용할수있게 된다
buildFeatures{
viewBinding = true
}
이제 사용자 정보를 담을 사용자 모델 클래스를 생성해준다
User.kt 파일을 생성해준다 (클래스 타입은 Data class로 생성)
constructor이라는 기본 생성자를 만들어준다
package com.example.firebasecrud
data class User(
var userKey : String, //사용자키값(구분값)
var userName : String, //사용자이름
var userAge : String //사용자나이
){
constructor() : this("","","")
}
User.kt
생성자를 아래와 같은 방식으로 표현할수도있다
package com.example.firebasecrud
data class User(
var userKey : String = "", //사용자키값(구분값)
var userName : String = "", //사용자이름
var userAge : String = "" //사용자나이
)
User.kt
이제 실시간 데이터베이스와 연결해줄 클래스를 생성해준다
package com.example.firebasecrud
import com.google.android.gms.tasks.Task
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
// 실시간 데이터베이스와 연결해줄 클래스 생성
class UserDao {
private var databaseReference : DatabaseReference? = null
// init안에 있는 코드 = UserDao 객체 생성시에 바로 실행될 코드
init {
val db = FirebaseDatabase.getInstance()
//FirebaseDatabase에 있는 user에 저장
databaseReference = db.getReference("user")
}
// 사용자 등록함수
// 사용자 정보를 전달받아 실시간 데이터베이스에 저장
fun add(user : User?) : Task<Void>{
// databaseReference객체를 통해서 push(값을넣어줌)를 해주는데, user값을 넣어줌
return databaseReference!!.push().setValue(user)
}
}
UserDao.kt
메인화면 디자인을 해줄것이다
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
tools:context=".MainActivity">
<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:hint="나이"
android:inputType="number"/>
<Button
android:id="@+id/add_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="등록"
android:textSize="25sp"/>
</LinearLayout>
activity_main.xml
LinearLayout으로 레이아웃을 설정했으면 orientation을 추가해줘야한다. 세로로 할것이기때문에 orientation을 vertical로 설정해준다
메인화면에는 이름과 나이를 입력받을 EditText와, 사용자 등록기능을 할 Button을 만들어 디자인해준다
이름적는부분에는 문자, 나이적는부분은 숫자만 받도록 inputType을 통해 형식을 지정해준다
이제 MainAcivity.kt 으로 가서 메인코드를 구현해보겠다
package com.example.firebasecrud
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.firebasecrud.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
// viewbinding객체 생성
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
MainActivity.kt
일단 viewbinding객체를 생성해준다. 이게 viewbinding의 기본틀이기때문에 먼저 이렇게 만들어놓고 코드를 더 추가해준다
package com.example.firebasecrud
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.example.firebasecrud.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
// viewbinding객체 생성
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// 데이터베이스 클래스 객체생성
val dao = UserDao()
// addBtn 눌렀을때
binding.addBtn.setOnClickListener {
// 입력값 변수에 담기
val name = binding.nameEdit.text.toString() //이름 //binding을 사용해서 nameEdit값을 가져오는데 String값으로 바꿔서 가져옴
val age = binding.ageEdit.text.toString() //나이 //binding을 사용해서 ageEdit값을 가져오는데 String값으로 바꿔서 가져옴
// 입력값을 담은변수를 User클래스에 담기(데이터 세팅)
val user = User("", name, age) // userKey,userName,userAge
// 위에 세팅된 값을 데이터베이스에 전송한다음 등록
dao.add(user)?.addOnSuccessListener {
// 데이터가 성공적으로 들어갔을때
Toast.makeText(this, "등록 성공!", Toast.LENGTH_SHORT).show()
}?.addOnFailureListener {
// 데이터 등록이 실패했을때
Toast.makeText(this, "등록 실패 : ${it.message}", Toast.LENGTH_SHORT).show()
}
}
}
}
MainActivity.kt
아까 viewbinding에서 코드를 더 추가해주었다. 이게 최종적인 MainActivity코드이다
addBtn버튼 눌렀을때 작동하는 코드를 보면, binding을 통해서 뷰객체에 바로 접근할수있다
데이터 등록에 실패했을때 토스트메시지를 보면 ${it.message}를 작성하므로써 오류 코드를 확인할수있다
최종적으로 앱 작동화면이다!
이렇게 이름,나이를 입력하고 등록버튼을 누르면 파이어베이스 실시간 데이터베이스에도 바로 적용이 되는것을 볼수있다
[유튜버 "만들면서 배워가는 프로그래머"님 영상 참고]
'개발 노트 > Kotlin' 카테고리의 다른 글
리스트뷰 vs 리사이클러뷰 (0) | 2024.01.30 |
---|---|
[Android/Kotlin] 파이어베이스 CRUD 만들기 (3) - 사용자 리스트 확인 (0) | 2024.01.26 |
[Android/Kotlin] 파이어베이스 CRUD 만들기 (1) - 프로젝트 생성, 파이어베이스 연동 (0) | 2024.01.26 |
[Kotlin]BottomNavigation (0) | 2024.01.18 |
[kotlin]스코프 함수 (0) | 2024.01.16 |