인프런 커뮤니티 질문&답변

seook6853님의 프로필 이미지
seook6853

작성한 질문수

[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)

리스트뷰 에러 질문

작성

·

277

0

안녕하세요 개발자님 강의 매우 잘 들은 학생입니다.
다름이 아니라 강의 후 제가 본 강의랑 기능이 거의 유사한 어플을 만들어보고 있습니다.!
만드는 중에 강의에서 BoardListLVAdapter로 리스트뷰를 생성했던 부분을 제가 동일하게 해보았는데
실행 후 해당 메뉴 탭을 누르면 "Only the original thread that created a view hierarchy can touch its views"라는
에러가 계속발생합니다.
구글검색해보면 main thread를 사용을 안해서 그런다고 하는데 해결방법을 찾아보니
runOnUiThread라는 기능을 사용하라고 나오는데 이건 Activity에경우에만 적용이 되는것 같고 Fragment에는 적용이 안되는 거 같습니다...
혹시 이 경우에 어떻게 해야하는지 도움을 받을 수 있을까요??
<Fragment에서 리스트뷰 생성하는 부분, getproduct함수에서 items리스트에 아이템을 넣어줌.>
<리스트뷰 어탭터 부분>
<리스트뷰 아이템 xml>
<fragment에 해당하는 xml의 ListView>

답변 4

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

그리고 rxjava와 코루틴 쓰레드에 대한 개념이 헷갈리시면 아래의 영상 한번 보시면 좋을 것 같습니다.

https://www.youtube.com/watch?v=iv_Qj_xGNRE

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

일단 예상되는 문제점으로 코루틴을 이용해서 네트워크 통신을 했는데

worker thread에서 ui를 변경하려는 문제같습니다.

(ui작업은 메인쓰레드에서 하셔야 합니다.)

아래 글을 한번 참고해보시겠어요?

https://www.tutorialkart.com/kotlin-android/original-thread-created-view-hierarchy-can-touch-views/

만약 혼자 해결이 어려우시면 깃허브에 소스 공유 후 링크 알려주시면 제가 한번 살펴보겠습니다 ㅎㅎ

seook6853님의 프로필 이미지
seook6853
질문자

네 감사합니다! 일단 혼자 시도해보고 정말 모르겠으면 다시 질문드리겠습니다!

정말 감사합니다!

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

아랭 링크에도 예제가 있습니다~

https://stackoverflow.com/questions/64980990/run-on-ui-thread-error-room-database-android-studio

https://blog.yena.io/studynote/2020/04/26/Android-Kotlin-Coroutine.html

0

seook6853님의 프로필 이미지
seook6853
질문자

네 Spring강의도 추가적으로 듣고 있어서 Retrofit2이용해서 데이터를 받아왔습니다!

추가적으로 구성되있는 부분 공유드리겠습니다!

  • getProduct()

- getProduct()함수는 Fragment에서 작성하였습니다!

  • API통신 정의한 부분

  • 어플 화면

-이렇게 홈 화면에서 Search화면으로 메뉴버튼을 누르면 만들어 놓은 리스트뷰도 안뜨고 위에서 말씀드린 Error가 발생합니다.

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요 :)

혹시 네트워크 통신 같은 것으로 데이터를 받아오셨나요?

Main Thread에서 동작하면 안되는 부분이 메인쓰레드에서 동작하게 되도록 구현하셔서 그런 것 같은데

getProduct() 부분이 어떻게 구현되어있는지도 공유해주셔야 할 것 같습니다.

가능하면 앱 화면과 전체 소스코드를 꼼꼼하게 공유해주시면 도움드릴 수 있을 것 같아요~

seook6853님의 프로필 이미지
seook6853

작성한 질문수

질문하기