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

리사이클러뷰 아이템 포커스 주기

0 추천

현재 볼륨 줄이기 버튼을 누르면 리사이클러뷰의 아이템을 순서대로 읽어주는 tts기능을 구현했습니다.

그런데 가시성을 높이고 싶어서 줄이기 버튼을 누르면 아이템이 순서대로 선택되는? 포커스를 갖는? 그런식으로 구현하고 싶은데 방법을 모르겠습니다..(자바 사용중에 있습니다!)

psh0036 (190 포인트) 님이 2022년 11월 8일 질문

1개의 답변

0 추천
다른 방법도 있을 수 있지만, 쉽게 떠올려 볼 수 있는 방법은 어댑터에 사용하는 아이템 클래스에 선택여부를 나타내는 필드를 하나 추가하세요. TTS를 읽을 때 이 원하는 아이템의 이 필드를 true만드시고 이걸 어댑터에 다시 설정하시고, tts가 동작 중일 경우 뷰홀더에서 선택표시가 되도록 UI를 업데이트 하세요. 아이템을 읽기 끝나면 다음 선택할 아이템으로 이동하도록 처리하시면  될 것 같구요.  필요한 리사이클러뷰 업데이트를 피하기위해 DiffUtil이나  ListAdapter를 사용하시면 더 좋을 것 같구요.
spark (227,530 포인트) 님이 2022년 11월 8일 답변
답변감사합니다...
requsetFocus(position)을 통해 ui업데이트를 하긴했지만 첫번째 아이템만되고 넘어가질않네요 ㅠㅠ
어댑터에 보여질 데이터를 중심으로 생각해 보세요. 이 데이가 tts에 필요한 리스트와 현재 읽기 중인 아이템의 위치 등을 갖도록 하고 어댑터는 단순히 이걸 반영하는 구조를 가져가도록 처리해 보세요.
지금 생각난 방법은 room DB에 boolean컬럼을 생성해주고 키를 누를때 그값을 검사해서 있는 아이템에 포커스를 주는 방식을 생각해봤는데 구현해봐야겠습니다!
...