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

parsing -> listview 관련

0 추천
안녕하세요.

 

xml데이터 파싱해서 listview에 출력하는 작업을 하고 있습니다.

 

출력은 문제 없이 됩니다. 하지만 시간이 오래 걸리네요.

 

만약 30개 데이터를 요청하면 30개 다 파싱한 후에 출력되고 하니까 딜레이가 생기네요.

 

10개 받아서 우선 보여주고, 그 다음에 스크롤 내리면 10개 또 파싱하고 보통 이렇게 만들어져있던데,

 

이게 어떤 원리인지 궁금합니다.

 

우선 예상된게, listview 옆에 스크롤바의 위치를 받을 수 있다. 인데 가능한것인가요??

 

혹시 listview에 한 리스트의 높이를 알고 있으니 드래그로 움직인만큼 계산

-> 내렸다 판단.(드래그한 거리 계산)

-> 파싱 받아온 데이터 만큼 사용자가 다 봤다

-> 다음 내용을 파싱해서 가져오는 것인가요??

 

이게 혼자 할려다보니 뭔가 막히면 점점 미궁으로 빠져서 힘드네요....;;
익명사용자 님이 2015년 6월 3일 질문
나중에 검색으로 이 질문 찾으실분들 위해 키워드 남겨둡니다.
OnScrollListener, onScrollStateChanged, onScroll, getLastVisiblePosition()

2개의 답변

0 추천
 
채택된 답변
30개 정도로 속도가 느려질만한 이슈가 발생하지는 않을텐데 리스트뷰 페이징처리는 리스트뷰에 스크롤리스너를 달수 있어요~~!

해당리스너에서 현재 화면에 보여지는 아이템의 포지션을 받아올수 있구요~~!

100씩 페이징을 했다면 10의 배수가 될때 다음 페이지 데이터를 로드 해주시면 되겠죠?
ThisPlus (46,920 포인트) 님이 2015년 6월 3일 답변
아 30개는 예를 들어서 해놓은 것입니다.
현재 보여지는 리스트 중에서 제일 밑 혹은 제일 위의 포지션을 알수있는 메소드가 있다는 말씀이신가요?
오! 그 메소드만 찾으면 금방하겠네요! 감사합니다.
0 추천
https://github.com/chrisbanes/Android-PullToRefresh

 

이전 프로젝트에서 사용했던 PullToRefresh 라이브러리 입니다.

PullToRefreshListView를 사용하고, setOnLastItemVisibleListener() 메소드를 사용해서 OnLastItemVisibleListener

리스너를 연결하면 리스트뷰의 가장 마지막에 추가된 아이템이 화면에 보이는 순간에 이벤트를 처리할 수 있습니다.
dante2k (8,390 포인트) 님이 2015년 6월 3일 답변
답변 감사합니다.
따로 구현은 다 했습니다.
조금 허접하긴하지만 나름 잘 구동되네요ㅎㅎ
...