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
댓글