상세 컨텐츠

본문 제목

[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part5 - 사용자 삭제

안드로이드

by aries574 2022. 11. 11. 12:35

본문


이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 다섯 번째 시간

실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보삭제하는 방법에 대하여 알아보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다. 

2022.11.10 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정

 

[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정

이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 네 번째 시간 실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보를 수정하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를

aries574.tistory.com


목차

1. 실행 화면
2. 데이터베이스 클래스 UserDao.kt
3. 라이브러리 등록
4. 사용자 리스트 액티비티 UserListActivity


1. 실행 화면

 

2. 데이터베이스 클래스 UserDao.kt

 - 설명 -

 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()
    }
}


3. 라이브러리 등록

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

 

GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a background, an icon and a label while swiping a Rec

A simple utility class to add a background, an icon and a label while swiping a RecyclerView item left or right. - GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a backg...

github.com

 

반응형


4. 사용자 리스트 액티비티 UserListActivity

 - 설명 - 

 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 - 로그인 액티비티

 

[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티

이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실

aries574.tistory.com

2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성

 

[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성

이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.

aries574.tistory.com

2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성

 

[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성

이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad

aries574.tistory.com

 

 

반응형

관련글 더보기

댓글 영역