fix(chat-room): stable IDs 설정 시점을 setAdapter 이전으로 이동
- ChatMessageAdapter: onAttachedToRecyclerView에서 setHasStableIds 호출 제거 - ChatRoomActivity: 어댑터 생성 직후 setHasStableIds(true) 설정 후 RecyclerView에 연결 원인: 옵저버 등록 이후 setHasStableIds 변경으로 런타임 예외 발생 검증: 단위 테스트 모두 통과, 빌드 성공
This commit is contained in:
@@ -485,8 +485,7 @@ class ChatMessageAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||||||
|
|
||||||
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
||||||
super.onAttachedToRecyclerView(recyclerView)
|
super.onAttachedToRecyclerView(recyclerView)
|
||||||
// RecyclerView와 연결된 시점에 안정 ID 활성화 (JVM 테스트에서 NPE 회피)
|
// 안정 ID는 어댑터 생성 시(init) 고정됨. 여기서는 연결 상태 플래그만 설정.
|
||||||
setHasStableIds(true)
|
|
||||||
isRecyclerViewAttached = true
|
isRecyclerViewAttached = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,6 +123,8 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
|
|||||||
binding.rvMessages.layoutManager = layoutManager
|
binding.rvMessages.layoutManager = layoutManager
|
||||||
|
|
||||||
chatAdapter = ChatMessageAdapter().apply {
|
chatAdapter = ChatMessageAdapter().apply {
|
||||||
|
// RecyclerView에 연결하기 전에 안정 ID를 활성화해야 함
|
||||||
|
setHasStableIds(true)
|
||||||
setCallback(object : ChatMessageAdapter.Callback {
|
setCallback(object : ChatMessageAdapter.Callback {
|
||||||
override fun onRetrySend(localId: String) {
|
override fun onRetrySend(localId: String) {
|
||||||
onRetrySendClicked(localId)
|
onRetrySendClicked(localId)
|
||||||
|
|||||||
Reference in New Issue
Block a user