이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 다섯 번째 시간
실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보를 삭제하는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.11.10 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정
- 설명 -
1. userDelete(key: String)
데이터베이스에 key(구분값)을 전달해서 해당 사용자 정보 삭제
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)
}
//삭제
fun userDelete(key: String): Task<Void>{
return databaseReference!!.child(key).removeValue()
}
}
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.github.xabaras:RecyclerViewSwipeDecorator:1.4'
setting.gradle
dependencyResolutionManagement -> repositories 괄호 안에 아래 코드를 넣어주시면 됩니다.
maven { url 'https://jitpack.io' }
- 라이브러리 문서 -
https://github.com/xabaras/RecyclerViewSwipeDecorator
- 설명 -
1. ItemTouchHelper
RecyclerView에 스와이프 기능 지원 클래스
2. ItemTouchHelper.LEFT
왼쪽으로 미는지 체크
3. onChildDraw
스와이프하면 실행되는 함수
4. RecyclerViewSwipeDecorator
스와이프 되면 꾸미는 클래스
5. addSwipeLeftBackgroundColor: 스와이프 왼쪽 시 배경 색상 설정
6. addSwipeLeftActionIcon: 스와이프 왼쪽 시 아이콘 설정
7. addSwipeLeftLabel: 스와이프 왼쪽 시
텍스트
설정
8. setSwipeLeftLabelColor: 스와이프 왼쪽 시 텍스트 색상 설정
class UserListActivity : AppCompatActivity() {
lateinit var binding: ActivityUserListBinding
lateinit var dao: UserDao
lateinit var adapter: UserAdapter
lateinit var userList: ArrayList<User>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityUserListBinding.inflate(layoutInflater)
setContentView(binding.root)
//userList 초기화
userList = ArrayList()
//dao 초기화
dao = UserDao()
//adapter 초기화
adapter = UserAdapter(this, userList)
//recycelrView 초기화
binding.recyclerView.layoutManager = LinearLayoutManager(this)
binding.recyclerView.adapter = adapter
//사용자 정보 가져오기
getUserList()
//사용자 삭제 기능
ItemTouchHelper(object: ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT){
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
//해당 위치 값 변수에 담기
val position = viewHolder.bindingAdapterPosition
when(direction){
ItemTouchHelper.LEFT ->{
val key = userList[position].userKey
dao.userDelete(key).addOnSuccessListener { //성공 이벤트
Toast.makeText(this@UserListActivity, "삭제 성공",
Toast.LENGTH_SHORT).show()
}.addOnFailureListener { //삭제 이벤트
Toast.makeText(this@UserListActivity, "삭제 실패: ${it.message}",
Toast.LENGTH_SHORT).show()
}
}//LEFT
}//when
}
override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
isCurrentlyActive: Boolean
) {
//스와이프 꾸미기
RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder,
dX, dY, actionState, isCurrentlyActive)
.addSwipeLeftBackgroundColor(Color.RED)
.addSwipeLeftActionIcon(R.drawable.ic_delete)
.addSwipeLeftLabel("삭제")
.setSwipeLeftLabelColor(Color.WHITE)
.create()
.decorate()
super.onChildDraw(
c,
recyclerView,
viewHolder,
dX,
dY,
actionState,
isCurrentlyActive
)
}
}).attachToRecyclerView(binding.recyclerView)
}//onCreate()
private fun getUserList(){
dao.getUserList()?.addValueEventListener(object: ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
//리스트 초기화
userList.clear()
for(dataSnapshot in snapshot.children){
val user = dataSnapshot.getValue(User::class.java)
//키값 가져오기
val key = dataSnapshot.key
//사용자 정보에 키 값 담기
user?.userKey = key.toString()
//리스트에 담기
if(user != null){
userList.add(user)
}
}
//데이터 적용
adapter.notifyDataSetChanged()
}
override fun onCancelled(error: DatabaseError) {}
})
}
}
2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티
2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성
2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성
[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part2 - 퀴즈 만들기 및 보여주기 (0) | 2022.11.22 |
---|---|
[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정 (0) | 2022.11.21 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정 (0) | 2022.11.10 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트 (0) | 2022.11.09 |
[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part2 - 사용자 등록 (0) | 2022.11.08 |
댓글 영역