이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 네 번째 시간
실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보를 수정하는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.11.09 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트
- 설명 -
1. userUpdate(key: String, hasMap: HashMap<String, Any>)
데이터베이스에 key(구분 값)와 수정된 hasMap(사용자 정보)를 전달해서 데이터 변경
class UserDao {
private var databaseReference: DatabaseReference? = null
init{
val db = FirebaseDatabase.getInstance()
databaseReference = db.getReference("user")
}
//등록
fun add(user: User?): Task<Void>{
return databaseReference!!.push().setValue(user)
}
//조회
fun getUserList(): Query?{
return databaseReference
}
//수정
fun userUpdate(key: String, hashMap: HashMap<String, Any>): Task<Void>{
return databaseReference!!.child(key)!!.updateChildren(hashMap)
}
}
app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity
Activity name: UserUpdateActivity
- 설명 -
1. 수정할 사용자 이름 EditText
2. 수정할 사용자 나이 EditText
3. 사용자정보 수정 기능 Button
<?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=".UserUpdateActivity">
<EditText
android:id="@+id/up_name_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이름"
android:inputType="text" />
<EditText
android:id="@+id/up_age_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="나이"
android:inputType="number" />
<Button
android:id="@+id/update_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="수정"
android:textSize="25sp" />
</LinearLayout>
- 설명 -
1. intent.hasExtra("key")
해당 정보에 데이터 null 체크
2. intent.getStringExtra("key")
해당 정보 꺼내오기
3. addOnSuccessListener
성공 이벤트
4. addOnFailureListener
실패 이벤트
class UserUpdateActivity : AppCompatActivity() {
private lateinit var binding: ActivityUserUpdateBinding
lateinit var sKey: String
lateinit var sName: String
lateinit var sAge: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityUserUpdateBinding.inflate(layoutInflater)
setContentView(binding.root)
//데이터베이스 객체
val dao = UserDao()
//데이터 null체크
if(intent.hasExtra("key") && intent.hasExtra("name")
&& intent.hasExtra("age")){
//데이터 담기
sKey = intent.getStringExtra("key")!!
sName = intent.getStringExtra("name")!!
sAge = intent.getStringExtra("age")!!
//데이터 보여주기
binding.upNameEdit.setText(sName)
binding.upAgeEdit.setText(sAge)
//사용자정보 수정버튼 이벤트
binding.updateBtn.setOnClickListener {
//입력값
val uName = binding.upNameEdit.text.toString()
val uAge = binding.upAgeEdit.text.toString()
//파라미터 셋팅
val hasMap: HashMap<String, Any> = HashMap()
hasMap["userName"] = uName
hasMap["userAge"] = uAge
//사용자 업데이트 이벤트
dao.userUpdate(sKey, hasMap).addOnSuccessListener {
Toast.makeText(applicationContext, "수정 성공",
Toast.LENGTH_SHORT).show()
//사용자 목록으로 이동
val intent = Intent(this@UserUpdateActivity,
UserListActivity::class.java)
startActivity(intent)
finish()
}.addOnFailureListener {
Toast.makeText(applicationContext, "수정 실패: ${it.message}",
Toast.LENGTH_SHORT).show()
}
}
}
}
}
- 설명 -
1. intent.putExtra("key", user.userKey)
전달할 데이터 담기(구분 값, 데이터)
2. context.startActivity(intent)
해당 액티비티 이동
3. (context as Activity).finish()
현재 액티비티 종료
class UserAdapter(private val context: Context, private val userList:ArrayList<User>):
RecyclerView.Adapter<UserAdapter.UserViewHolder>(){
//화면 설정
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
val view = LayoutInflater.from(context)
.inflate(R.layout.user_layout, parent, false)
return UserViewHolder(view)
}
//데이터 설정
override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
val user: User = userList[position]
holder.nameText.text = user.userName
holder.ageText.text = user.userAge
holder.itemView.setOnClickListener {
//사용자 수정화면으로 이동
val intent = Intent(context, UserUpdateActivity::class.java)
intent.putExtra("key", user.userKey)
intent.putExtra("name", user.userName)
intent.putExtra("age", user.userAge)
context.startActivity(intent)
(context as Activity).finish()
}
}
//값 갯수 리턴
override fun getItemCount(): Int {
return userList.size
}
class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
val nameText: TextView = itemView.findViewById(R.id.name_text)
val ageText: TextView = itemView.findViewById(R.id.age_text)
}
}
2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티
2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성
2022.09.14 - [안드로이드] - [안드로이드 코틀린] SQLite ToDo List 만드는 방법 part1 - Data 클래스와 DB 클래스
[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정 (0) | 2022.11.21 |
---|---|
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part5 - 사용자 삭제 (0) | 2022.11.11 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트 (0) | 2022.11.09 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part2 - 사용자 등록 (0) | 2022.11.08 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성 (0) | 2022.11.07 |
댓글 영역