[Android/Kotlin] ActivityResultLauncher with RecyclerView

장똑대·2021년 10월 10일
0

ActivityResultLauncher 사용해보기

  • startActivityForResult가 deprecate 되었다! 그래서 ActivityResultLauncher를 사용해 볼것이다
  • RecyclerView와 함께 사용해보자

📄 MainActivity.kt

fun useActivityResultLauncher() {
    startForActivityResult.launch(Intent(this, OhterActivity::class.java))
}

private val startForActivityResult: ActivityResultLauncher<Intent> =
    registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
            if (result.resultCode == RESULT_OK) {
                // 다른 액티비티를 다녀와서 실행할 작업 작성
                val resultStr = result.data!!.getStringExtra("Data")
            }
        }
  • 다녀온 액티비티에서 인텐트에 담아준 Extra를 불러올 땐 intent.getExtra가 아닌 result.data!!.getExtra로 확인해야한다.

📄 RecyclerViewAdapter.kt

class RecyclerViewAdapter(val mContext: Context, val mList: List<ResponseData>) : 
    RecyclerView.Adatper<ViewHolder>(){
   
    ...
    
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.onBind(mList[position])

        holder.itemView.setOnClickListener {
            val activity = mContext as OtherActivity
            // 인텐트에 필요한 정보를 담아 전달
            activity.intent.putExtra("Data", mList[position].name)
            activity.setResult(Activity.RESULT_OK, activity.intent)
            activity.finish()
        }
    }
    
    ...

}
profile
장똑대와 안드로이드

0개의 댓글