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

Recycler View의 adapter에서 무조건 한번만 실행되게하는 함수 짜는법??

0 추천
리사이클러뷰의 어댑터에서

onCreateViewHolder나 onBindView같은 함수는 로그찍어보니 여러번 실행되더라구요..!
(당연하겠죠? 게시판 글하나하나 생성하려면 생성해야하니까요...)

근데 게시판 그냥 딱들어갈때 한번만 실행되게끔 하고 (뭔가 static느낌으로?)

그 이후에는 각 view에대한 생성자, oncreateViewHolder, onBindView만 되게끔하고 이 함수들에서 아까 딱한번만 실행한거에서

데이터를 가져오게 하고싶은데, 하는방법있나요??

 

 

정리하면, 리사이클러뷰의 어댑터에  onCreateViewHolder, onBindViewHolder,생성자는 리스트한객체만들때마다 계속 실행되므로, adapter가 처음실행될때 딱한번만 실행되고 그이후에는 실행안되게하는 약간 static?느낌의 함수를 짜고싶은데 방법이 있나요??
앙띠앙앙 (710 포인트) 님이 2017년 7월 2일 질문

2개의 답변

0 추천
 
채택된 답변
제 생각에는 생명주기를 보시는게 맞을거같은데...

recyclerview에 어댑터를 이용하여 넣고 그것을 한번만 실행하고 고정시키고싶다는거로 이해한게 맞다면

앱내부에서 사용자가 왓다갓다 하는 동선을 생각했을때 그부분은 뭔가 이상한거같구요

onResume 안에다가 데이터를 clear 해주신다음에 실행시켜주는부분을 넣어주시면

액티비티로 들어올때마다 데이터가 중복으로쌓이지않고 데이터를불러올수는있습니다.
코딩하는라쿤 (440 포인트) 님이 2017년 7월 3일 답변
앙띠앙앙님이 2017년 7월 7일 채택됨
onResume안에서 clear해준다는게, 게시판을 20개글씩 서버에서 받아온다고치면,

기존에 받아왔던 20개를 clear한다는 의미인가요??

말뜻을 정확하게 모르겠어요ㅠ
어댑터를 이용하실때 어댑터에 데이터배열을 전달해주어
그정보를 recyclerview에 넣어주잖아요?
액티비티가 onResume이 실행될때
맨처음에 그 배열을 clear해주시고  
정보를 다시 배열에 넣어주시고 그 데이터배열을 어댑터에 넣어주시는방식이에요
아 ~ 답변 감사합니다!!
도움이 되었다면 다행이네요 ㅎ
0 추천
static한 느낌이라는게 무슨말인지 알수가 없네요

한번만 실행되면 스크롤 후에 다시 돌아오게 될 경우 list가 비어지게 될 겁니다

즉, 해제만 되고 다시 재사용해서 그려주는 부분이 없어지게 되는거죠
prague (26,200 포인트) 님이 2017년 7월 3일 답변
제가 애매하게달았군요...ㅎㅎ

아랫분이 주신답이 될것같습니다. 감사합니다.
...