본문 바로가기
반응형

Android 개발/RecyclerView, List8

DiffUtil 이용해서 업데이트 하는 RecyclerView 오늘은 DiffUtil에 대해서 정리해 보도록 하겠습니다. 1. DiffUtil 과 notifyDataSetChanged RecyclerView에 표현할 데이터를 업데이트하기 위해서 사용하는 것이 notifyDataSetChanged()라는 함수입니다. 표현할 데이터셋을 변경해주고 이것만 실행시키면 만사 오케이이기 때문인데요. 그런데, 뷰를 업데이트시키는 과정에서 비효율이 많이 발생합니다. 모든 데이터를 다시 그리기 때문인데요. 이를 개선하기위해, DiffUtil이 나왔습니다. 이것을 이용하면, 데이터들을 비교해서 변경된 부분만 효율적으로 업데이트 할 수 있습니다. 2. DiffUtil 구현 2-1. Adapter의 addAll 먼저 기존의 Adapter를 보겠습니다. 리스트에 뿌려줄 아이템들을 Acti.. 2021. 4. 15.
RecyclerView에서 고차함수 이용한 리스트아이템클릭 구현 인자로 함수를 받는 함수를 고차함수라고 하는데요. 영어로 HigherOrder Function이라고 하지요. 오늘은 이것을 이용해서 리스트의 아이템OnItemClickListener를 어떻게 이용하는지 정리해 보도록 하겠습니다. 먼저 기본적인 recyclerView를 설정하도록 하겠습니다. 참고로 여기서는 viewBinding을 사용하였습니다. viewBiding은 findviewById를 대체할 수 있는 방법인데요. 이와 관련해서는 다른 글에서 정리하도록 하겠습니다. 1. RecyclerView를 위한 기본적인 셋업 먼저 가장 기본적인 Recycler View를 세팅하도록 하겠습니다. 1-1. DataModel설정 먼저 Movie라고 하는 간단한 데이터클래스를 정의하겠습니다. 1-2. recyclerV.. 2021. 4. 2.
View가 크기변화를 감지하도록 하는 방법 (addOnLayoutChangeListener) 리스트뷰가 들어간 앱을 만들다 보면, 키보드가 위로 올라오는 경우,화면사이즈가 줄어들어서 전체 리스트 뷰의 아이템이 다 보이도록 해야합니다. 대부분의 경우는 Manifest에서,android:windowSoftInputMode="adjustResize" 를 설정해줌으로 전체 화면사이즈가 줄어들어 해결되지만,경우에 따라서 키보드가 올라갈 경우에는 특정 View를 보이지 않도록 하는 경우도 있습니다. 이 때는 키보드가 올라가면서, 화면의 사이즈가 줄어들었다는 것을 감지하여,그 여부에 따라서, 특정 View의 visiblity를 조절해주면 됩니다. 오늘은, RecyclerView가 화면사이즈 변화를 감지하여서,그 변화에 따라서 특정 뷰를 보이지 않도록 하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 Vi.. 2017. 7. 26.
Drag해서 RecyclerView (listview) 순서 바꾸기 앱을 만들다보면, 리스트를 생성하는 것 뿐만이 아니라, 리스트 순서를 편집해야 하는 경우도 생기게됩니다. 특히, 모바일에서는 드래그를 통해서 위치를 바꾸어야 해서 조금 까다로운 편인데요. 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. Model Class와 RecyclerView 먼저 아래 모델 데이터와 같은 데이터 클래스를 가지고, RecyclerView를 생성하겠습니다. recyclerView를 생성하는 구체적인 방법은 아래 링크에서 참조해주세요. >> RecyclerView 로 listview 정복 Part1 우선, 위와 같은 데이터 모델을 가지고아래와 같은 리스트와 아이템을 가진 리스트를 우선 만들어 놓습니다. 2. ItemTouchHelperCallback 구현하기 먼저, StudentIte.. 2017. 7. 20.
notifyDataSetChanged 실행시에 깜박이는 현상 해결 안드로이드의 리스트뷰는 전부 RecyclerView로 한다고 해도 될 정도로,RecyclerView는 정말 많이 사용됩니다. RecyclerView를 사용하다가 때로는, intialize된 후에 각 아이템의 데이터가 수정되어서, 다시 notifyDataSetChanged()를 해줘야 하는 경우가 생깁니다. 보통은 한번만 해주면 되는 notifyDataSetChanged()를 두번 혹은 그 이상 해야되는 경우가 있는 것인데요.이렇게 하면 깜박임 현상이 발생하는 것을 볼 수 있습니다. 오늘은, 이 문제를 해결 하려면 어떻게 해야 하는지 정리해보겠습니다. 참고로, 이글에서는 RecyclerView의 구현과 기본적인 내용에 대해서는 생략합니다.RecyclerView의 기본적인 내용은 아래 링크를 참조해 주세요... 2017. 7. 2.
Checkable interface 로 selectable한(선택할 수 있는) RecyclerView 리스트 만들기 안드로이드 앱을 만들면서 설정UI를 만들다 보면,카톡의 알람음 선택UI처럼,리스트를 누르면 그 아이템이 선택되도록 해야하는 경우가 있습니다. 오늘은 그 때 구현해야하는 Checkable 인터페이스 를 사용하여, 커스텀 리스트를 만들어보도록 하겠습니다. 1. Checkable interface 우선, Checkable interface가 무엇인지, 소스코드를 먼저 보고 가겠습니다~.view를 checkable하게 만들기위해서 사용하는 거군요.그리고, setChecked, isChecked, toggle() 을 구현해야 되네요. 그럼 이제 실제로 코드에 적용해보면서, CustomList를 만들어 보겠습니다. 2017. 1. 20.
RecyclerView 로 listview 정복 Part.2 #리스트 아이템 클릭 이전글에서 RecyclerView로 리스트를 만드는 것에 대해서 정리해보았었는데요. 오늘은 만든 리스트를 유저가 터치할 수 있고, 그에 대해 간단하게 토스트팝업을 띄우는 것에 대해 정리해보겠습니다. 참고로 리스트뷰 만드는 방법에 대해서는 아래 링크에 정리되어 있습니다~. >> RecyclerView 로 listview 정복 Part1 1. 리스트 한줄 클릭시 반응하기 먼저 개발할 시나리오를 정리해보면 다음과 같습니다. 리스트에 있는 여러개의 줄중 하나의 줄 전체를 유저가 클릭하면, 터치한 줄의 데이터를 받아와서, 토스트 팝업을 띄운다. 그럼 아래에서 구현하면서 정리해보겠습니다. 1-1. 유저가 터치하는 것을 누가 알까? 유저가 터치했는지 어떻게 알수있을까요? 유저는 뷰를 터치한 것이고, 뷰는 뷰홀더에 있.. 2016. 12. 25.
RecyclerView 로 listview 정복 안드로이드, 아니 모바일 UI의 작업의 핵심은 역시 ListView인것 같습니다. 앱을 만들면서 ListView를 만들지 않은 적은 없었는데요. 오늘은, 이 RecyclerView를 한번 정리해볼려고 합니다~. 최종적으로 만들려고 하는 형태는 다음과 같습니다. 1. 라이브러리 설정 역시나 Library부터 설정하고 가겠습니다. Dependencies에서 recyclerview로 검색하셔서 파란색 하이라이트된 라이브러리를 선택해 추가하시면 됩니다. Gradle파일에 직접 추가하시려면 하단에 compile 'compile 'com.android.support:recyclerview-v7:24.2.0'' 를 추가해주세요~ 그럼 저희가 구현해야 할 것들이 나옵니다. onCreateViewHolder부터 보겠습니.. 2016. 12. 20.