본문 바로가기
카테고리 없음

[Android] recyclerview item 개수 제한 (limit adapter item count)

by heaven00 2022. 9. 2.
728x90

 

왜 구글링해도 제대로 된게 안 나오지! 하면서 슬퍼했는데

알고보니 너무 쉬워서 안올라온건가..~?

허탈해서 올리는 글

 


 

처음엔 getItemCount로 접근하려고했는데

diffutil을 쓰다보니까 getItemCount로 접근할 수 없었다

 

그래서 처음에는 아래 처럼 하나하나 for문을 돌면서 데이터들을 넣는 방식을 사용했다

private var reviewList = mutableListOf<ReviewData>
...

homeViewModel.reviewDetail.observe(viewLifecyclerOwner) {
	for(i in 0 until 5) {
    	reviewList.add(ReviewData(it[i].id, it[i].name))
    }
    (binding.rvHomeReview.adapter as ReviewAdapter).submitList(reviewList))
}

 

 

그런데 이런 방식은 시간복잡도가 O(n)이어서 너무 좋지 않은 코드라고 생각을 했다

그러다가 우리 플젝 리드님이 index를 잘라서 써란말을 듣고 찾아보니까

 

 

아래처럼 코드를 간단하게 줄일 수 있었다..!

homeViewModel.reviewDetail.observe(viewLifecyclerOwner){
	(binding.rvHomeReview.adapter as ReviewAdapter).submitList(it.subList(0,4))
}

 

 

subList : 지정된 formIndex(포함)와 toIndex(제외) 사이의 목록 부분을 반환한다.

abstract fun subList(fromIndex: Int, toIndex: Int) : List<E>

 

 

앞으로 코틀린 문법도 공부를 해야겠다!

728x90

댓글