제목이 길고 길지만 내용은 이렇습니다
A Activity -> RecyclerView.Adapter -> B Activity -> A Activity
이런 식으로 다시 돌아와서 내용에 따라 리사이클러뷰를 변경시켜야 합니다.
Adapter에서 Activity로 가는 이유는 저는 Dialog를 Activity를 이용하여 구현하였기 때문입니다.
class DonationRVAdapter(private val itemList : ArrayList<DonationData>, val context : Context) : RecyclerView.Adapter<DonationRVAdapter.ViewHolder>() {
inner class ViewHolder(private val binding: ListDonationBinding) :
RecyclerView.ViewHolder(binding.root) {
var p : Int? = null
val button : Button = binding.donationBtnCheck
fun bind(data: DonationData) {
binding.donationName.text = data.name
binding.donationMoney.text = data.price
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val viewBinding = ListDonationBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(viewBinding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(itemList[position])
holder.button.setOnClickListener {
val intent = Intent(context, DonationDialog::class.java)
intent.putExtra("position", position)
(context as AppCompatActivity).startActivityForResult(intent, 1)
}
}
override fun getItemCount(): Int = itemList.size
}
이렇게 구현하였고, Dialog로 보이도록 설정하는 방법은 이전 포스팅을 참고해주세요.
저는 이를 OnActivityResult()
를 이용하여 풀었습니다.
OnActivityResult()
를 설정해주고,(context as AppCompatActivity).startActivityForResult(intent, 1)
를 이용하여 B Activity 이동합니다.val resultIntent = Intent()
resultIntent.putExtra("position", position)
setResult(Activity.RESULT_OK, resultIntent)
setResult로 A Activity에게 돌아가는 이 intent가 Result라고 인지시켜줍니다.
이렇게 하면 Adapter를 거쳐서 onActivityResult를 사용할 수 있습니다!