마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리사이클러뷰 혹은 에폭시 사용시 화면전환후 랜덤한 위치에 데이터 배정 문제

0 추천

리사이클러뷰 및 에폭시 사용할때요, 리사이클러뷰의 아이템을 재활용하는 특성때문에

입력해놓은 데이터가 재활용되는 아이템에 뜨는 문제가 있는데요, (추측)

이걸 어떻게 해결하면 좋나요?

https://imgur.com/a/fb4vG4c

현상 링크입니다. 링크에 총 3가지 사진이 있는데 (사진1 사진2 움짤1)

사진1과 2는 사진1에서 EidtText에 데이터를 입력후 다른 화면으로 갔다가 

다시 돌아온 후의 화면(사진2)입니다.

보시다시피 데이터가 입력한 위치와 맞지않게 되어있죠..

 

그리고 제일 문제인 움짤 사진입니다.

데이터를 많이 추가한 후에 EidtText에 임의의 데이터를 입력한후

스크롤하면 재활용하는 특성때문인지 데이터가 뒤죽박죽이 된채로 입력이 되는데요,

이 문제를 어떻게 해결할 수있을까요?

codeslave (3,940 포인트) 님이 2021년 11월 16일 질문

1개의 답변

0 추천

리사이클러뷰 어댑터가 임의대로 순서를 섞을 것 같지는 않구요, 어댑터에 데이터를 설정하실 때 브레이크 포인트를 찍어서 실제로 데이터가 어떤 순서대로 되어 있는지 확인해 보세요. 아무래도 데이터를 제공하는 데이터 소스 쪽에서 잘못된 순서로 데이터를 제공할 가능성이 커보입니다. 그리고 마지막 증상같은 경우는 뷰홀더가 재사용되기 때문에 데이터를 바인딩할 때 기존 데이터가 남아있지 않도록 처리해야 합니다. 예를 들면 뷰홀더에서,

if (someCondition) {
    textView1.text = "텍스트"
}

위처럼하고 else에 대한 처리 또는 초기화 하는 처리가 없다고 할 경우에는 뷰홀더가 재사용될 때 "텍스트"가 계속 남아 있을 수 있습니다.

 textView1.text = ""
if (someCondition) {
    textView1.text = "텍스트"
}

따라서, 위처럼 초기화를 하던가 else 블록 처리를 해주셔야 할거예요.

spark (227,470 포인트) 님이 2021년 11월 16일 답변
spark님이 2021년 11월 16일 수정
에폭시를 사용중입니다..첫두번째 사진과 마지막 사진과는 다른 증상인가요?
그리고 마지막 증상같은 경우는 어떤식으로 처리해야하나요..?EditText에 입력은 했으나 뭐 아이템에 저장을하거나 그런것은 아닌데 그런것도 가능한가요? 차라리 입력한 데이터가 없어지면 모르겠는데..
...