Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자료구조
- ADsP
- h2 error
- kotlin checkbox error
- watchman error
- kotlin recyclerview checkbox error
- expo-cli error
- sockettimeout
- 쿼리문
- 선택정렬
- watchmanresponse
- GitHub
- 데이터 이해
- retrofit
- Kotlin
- MySQL
Archives
- Today
- Total
Stand up lee
[Kotlin] Recyclerview의 Adapter에서 Fragment로 데이터 전달 본문
Fragment 내에 List / Card를 표시할 Recyclerview가 있고,
그 Recyclerview를 다루는 Adapter가 있다.
Adapter에서 item를 뿌리고 그 item의 변화, (예를 들면 checkbox) 를 Fragment로 다시 전달하고싶다
1. Fragment에서 item의 변화 값을 처리하는 inner class 함수를 만든다
inner class onItemCheck(){
fun onItemChecked(user: User, isChecked: Boolean) {
if (requireActivity() is MainActivity) {
val activity = (requireActivity() as MainActivity)
activity.updateUser(user)
}
}
}
2. Fragment에서 Adapter를 선언할 때 adapter에 필요한 값들과 위에서 선언한 함수랑 같이 넘겨준다
var link = onItemCheck()
val adapter = CardAdapter(this.requireContext(), list, link)
3. Adapter에서 다음과 같이 파라미터로 받아오고 필요한 부분에서 활용한다
class CardAdapter(context : Context, items : List<User>, var link : CardFragment.onItemCheck) :
RecyclerView.Adapter<CardAdapter.MyViewHolder>() {
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
val item: User = items.get(position)
holder.itemchecked?.setOnCheckedChangeListener { _, isChecked ->
item?.userChecked = if (isChecked) 1 else 0
item?.let { link.onItemChecked(it, isChecked) }
}
}
}
'개발일기' 카테고리의 다른 글
[Kotlin] error : Recyclerview 스크롤시 Checkbox checked 에러 (0) | 2022.03.30 |
---|---|
[kotlin] error : 서버통신시 fail to connect to / java.net.SocketTimeoutException (0) | 2022.02.03 |
[Kotlin] 회원가입 유효성 검사 _ 정규표현식 사용 (0) | 2022.01.28 |
[Server] 세션, 쿠키, 토큰 정리 (0) | 2022.01.26 |
[Git] Git Push Error _ error: src refspec master does not match any 해결 (0) | 2021.09.17 |