RecyclerView vs.리스트뷰
RecyclerView 위젯은 ListView의 보다 고급스럽고 유연한 버전입니다.
네, 멋지네요, 그런데 이 예시 사진을 보고 이 둘의 차이점에 대해 정말 헷갈렸어요.
위의 그림은 쉽게 만들 수 있습니다.ListView
사용자 지정 어댑터를 사용합니다.
그래서, 어떤 상황에서 사용해야 할까요?RecyclerView
?
RecyclerView
로 생성되었습니다.ListView
개선, 예, 첨부된 목록을 생성할 수 있습니다.ListView
제어, 그러나 사용RecyclerView
보다 간단합니다.
위/아래로 스크롤하는 동안 셀을 재사용합니다. 이는 에서 View Holder를 구현할 때 가능합니다.
ListView
어댑터, 하지만 선택적인 것이었습니다.RecycleView
어댑터를 쓰는 기본 방법입니다.해당 컨테이너에서 목록을 분리합니다 - 설정을 통해 런타임에 목록 항목을 다른 컨테이너(선형 레이아웃, 그리드 레이아웃)에 쉽게 넣을 수 있습니다
LayoutManager
.
예:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
- 애니메이션 공통 목록 작업 - 애니메이션이 분리되어 다음으로 위임됩니다.
ItemAnimator
.
에 관한 것이 더 있습니다.RecyclerView
, 이런 점들이 주를 이루는 것 같아요.
그러니까 결론부터 말하자면,RecyclerView
는 관심사 위임 패턴을 따르고 재활용 항목이라는 하나의 작업만 수행하는 "목록 데이터"를 보다 유연하게 처리할 수 있는 제어입니다.
목록 보기가 성능이 좋으려면 홀더 패턴을 구현해야 하며, 특히 목록을 여러 종류의 보기로 채우려는 경우에는 이 패턴이 엉망이 되기 쉽습니다.
RecyclerView는 이 패턴을 구워서 엉망으로 만들기가 더 어렵습니다.또한 그리드처럼 직선형이 아닌 다양한 레이아웃을 쉽게 처리할 수 있도록 유연성이 향상되었습니다.
ListView
의 조상입니다.RecyclerView
. 많은 것들이 있었습니다.ListView
잘 못 했거나 못 했거나 둘 중 하나일 겁니다만약 당신이 그것의 단점들을 모아본다면.ListView
문제를 다른 도메인으로 추상화하여 문제를 해결했습니다. 리사이클러 보기와 같은 것이 나타납니다.ListViews의 주요 문제점은 다음과 같습니다.
시행하지 않았습니다.
View
동일한 항목 유형에 대해 재사용(에서 사용되는 어댑터 중 하나를 참조)ListView
, 만약 당신이 getView 메소드를 공부한다면 당신은 프로그래머가 모든 행에 대해 새로운 뷰를 만드는 것을 막지 못한다는 것을 알 수 있을 것입니다. 비록 어떤 것도 프로그래머가 그것을 통해 전달된다 하더라도.convertView
변수)비용이 많이 드는 것을 방지하지 못했습니다.
findViewById
uses(위에서 언급한 뷰를 재활용하는 경우에도 개발자가 호출할 수 있습니다.findViewById
하위 보기의 표시 내용을 업데이트합니다.의 주된 목적.ViewHolder
무늬를 그리다ListViews
캐싱을 하기 위해서였습니다.findViewById
호출. 단, 플랫폼의 일부가 아닌 것으로 알고 계셨을 경우에만 가능)행이 표시된 보기에서 지원되는 수직 스크롤만 있음(재활용 보기는 보기가 배치되는 위치와 이동 방법에 상관없이 자동으로 추상화됩니다.
LayoutManager
. 그러므로 재활용자는 전통적인 것을 지지할 수 있습니다.ListView
위에 보여진 것과 같이.GridView
, 하지만 이에 국한된 것이 아니라 더 많은 작업을 수행할 수 있지만 프로그래밍 발 작업을 수행해야 실현할 수 있습니다.추가/제거할 애니메이션은 고려 대상이 아닙니다.이 문제를 해결하는 방법은 전적으로 사용자에게 달려 있습니다(리사이클러 보기 비교).어댑터 클래스는 아이디어를 얻기 위해* 메서드 오퍼링 v.ListViews에 알립니다.
요컨대RecyclerView
더 유연하게 생각하는 것입니다.ListView
, 당신 쪽에서 코딩을 더 해야 할 수도 있습니다.
그
RecyclerView
는 어댑터 기반 뷰를 비슷한 방식으로 렌더링하도록 준비된 새 ViewGroup입니다.그것은 의 뒤를 이을 것으로 추정되며, 그것은 에서 찾을 수 있습니다.latest support-v7 version
. 는 확장성을 염두에 두고 개발되었기 때문에 생각할 수 있는 모든 종류의 레이아웃을 만드는 것이 가능하지만, 약간의 진통제 투여 없이는 불가능합니다.
안토니오 레이바에게서 받은 답변
compile 'com.android.support:recyclerview-v7:27.0.0'
RecyclerView
가 정말로 보다ListView
. 자세한 내용은 이 페이지를 참조할 수 있습니다.
다음은 RecyclerView와 ListView 간의 몇 가지 주요 사항/ 차이점입니다.현명하게 판단하세요.
ListView가 사용자에게 적합한 경우 마이그레이션할 이유가 없습니다.새 UI를 작성하는 경우 RecyclerView를 사용하는 것이 더 나을 수 있습니다.
RecyclerView에 뷰가 내장되어 있습니다.홀더, listView와 같이 자체적으로 구현할 필요는 없습니다.특정 인덱스의 알림도 지원합니다.
아이템의 추가나 제거를 애니메이션화하는 것과 같은 것들은 당신이 아무것도 할 필요 없이 재활용자 보기에 이미 구현되어 있습니다.
레이아웃 관리자를 RecyclerView와 연결할 수 있습니다. 이는 ListView에서 제한적으로 사용할 수 있는 재활용 뷰에서 임의 뷰를 얻는 데 사용할 수 있습니다. ListView에서 사용할 수 있는 유일한 유형의 뷰는 ListView(수직 목록 뷰)뿐입니다.수평 리스트뷰를 구현할 수 있는 공식적인 방법조차 없습니다.이제 리사이클러 뷰를 사용하면, 우리는
i) Linear Layout Manager - 수직 목록과 수평 목록을 모두 지원하는 ii) Staggered Layout Manager - Pinterest를 시차 목록처럼 지원하는 iii) Grid Layout Manager - 갤러리 앱에서 볼 수 있는 그리드 표시를 지원합니다.
그리고 가장 좋은 것은 우리가 원하는 대로 이 모든 것을 역동적으로 할 수 있다는 것입니다.
주요 장점:
ViewHolder
에서 기본적으로 사용할 수 없습니다.ListView
. 우리는 그 안에서 명시적으로 창조할 것입니다.getView()
.RecyclerView
내장된Viewholder
.
리사이클러뷰가 리스트뷰에 비해 가지는 장점:
보기 포함기본적으로 보유자.
쉬운 애니메이션.
수평, 그리드 및 시차 레이아웃 지원
recyclerView와 비교한 listView의 장점View:
디바이더 추가가 용이합니다.
내장 어레이 어댑터를 사용하여 간단한 일반 목록 작성 가능
머리글 및 바닥글을 지원합니다.
OnItemClickListner를 지원합니다.
제 생각에 그들의 가장 큰 차이점은ListView
항목을 만들거나 배치하는 동안 항목의 위치를 찾습니다.RecyclerView
항목의 유형을 찾습니다.동일한 유형으로 생성된 다른 항목이 있는 경우RecyclerView
를 다시 만들지 않습니다.먼저 어댑터를 요청한 다음 재활용 풀에 요청합니다. 재활용 풀에 "네, 유사한 유형을 만들었습니다."라고 표시되면 재활용 풀에 요청합니다.RecyclerView
동일한 유형을 만들지 않습니다.ListView
이런 종류의 풀링 메커니즘은 없습니다.
리사이클러보기 정보
그RecyclerView
와 함께 소개되었습니다.Android 5.0 (Lollipop)
. 지원 라이브러리에 포함되어 있습니다.따라서 안드로이드 API 레벨 7과 호환됩니다.
마찬가지로ListView
,RecyclerView’s
주요 아이디어는 성능 친화적인 방식으로 목록 기능을 제공하는 것입니다.이 견해의 이름 중 'Recycler' 부분은 우연히 거기에 있는 것이 아닙니다.RecyclerView
현재 작업 중인 항목을 실제로 재활용할 수 있습니다.뷰 홀더라는 패턴 덕분에 재활용 공정이 진행됩니다.
재활용자에 대한 찬반 견해
장점:
- 항목 추가, 업데이트 및 제거를 위한 통합 애니메이션
- 보기를 사용하여 보기 재활용을 시행합니다.홀더패턴
- 그리드와 목록을 모두 지원합니다.
- 세로 및 가로 스크롤 지원
- DiffUtil과 함께 사용할 수 있습니다.
단점:
- 복잡성을 더함
- No OnItem클릭리스너
목록 보기 정보
그ListView
안드로이드가 시작된 이래로 존재해왔습니다.그것은 심지어 사용할 수 있었습니다.API Level 1
그리고 그것은 그것과 같은 목적을 가지고 있습니다.RecyclerView
.
ListView의 사용법은 사실 매우 간단합니다.이런 면에서는 후계자답지 못합니다.학습 곡선은 Recycler View에 대한 곡선보다 매끄럽습니다.따라서 더 쉽게 파악할 수 있습니다.Layout Manager, Item Animator 또는 DiffUtil과 같은 것을 처리할 필요가 없습니다.
목록 보기의 장단점
장점:
- 단순 용법
- 기본 어댑터
- 사용 가능한 OnItemClickListener
- 그것이 그들의 기반입니다.
ExpandableListView
단점:
- 보기의 용도를 수용하지 않습니다.홀더패턴
위의 차이점 외에 다음과 같은 것들이 더 있습니다.
RV는 뷰 생성과 뷰할 데이터의 바인딩을 구분합니다.LV에서 view에 데이터를 바인딩하기 전에 view를 생성하기 위해 convertView가 null인지 아닌지 확인해야 합니다.그래서 RV의 경우는 필요할 때만 뷰가 생성되지만 LV의 경우는 변환 뷰에 대한 체크를 놓칠 수 있고 매번 뷰가 생성됩니다.
Layout Manager를 사용하면 그리드와 목록 간의 전환이 더욱 쉬워졌습니다.
단일 항목만 변경되어도 모든 항목을 알리고 업데이트할 필요가 없습니다.
LV의 경우 뷰 캐싱을 구현해야 했습니다.기본적으로 RV로 제공됩니다. (뷰 캐싱과 재활용은 차이가 있습니다.)
RV의 경우 매우 쉬운 아이템 애니메이션.
내생각엔RecyclerView
리스트뷰에 사용된 재활용 패턴의 문제점을 해결하기 위해 개발자의 삶을 더 어렵게 만들기 때문에 만들어졌습니다.그 밖의 모든 것들은 당신이 어느 정도 감당할 수 있습니다.예를 들어, 에 대해 동일한 어댑터를 사용합니다.ListView
그리고.GridView
두 관점 모두 중요하지 않습니다.getView
,getItemCount
,getTypeCount
사용하니까 똑같습니다.RecyclerView
만약 필요하지 않다면ListView
와 함께ListAdapter
아니면GridView
그리드 어댑터를 사용하면 이미 효과가 있습니다.올바르게 구현한 경우ViewHolder
리스트 뷰의 패턴은 다음과 같이 큰 개선을 볼 수 없을 것입니다.RecycleView
.
저는 조금 같이 일했습니다.RecyclerView
그리고 여전히 더 선호합니다.ListView
.
물론이죠, 둘 다 사용합니다.
ViewHolders
, 그래서 이건 장점이 아닙니다.A
RecyclerView
코딩이 더 어렵습니다.A
RecyclerView
헤더와 풋터가 포함되어 있지 않아서 마이너스입니다.A
ListView
보기를 작성할 필요가 없습니다.소지자.섹션이나 부제목이 있는 목록을 원하는 경우에는 보기 없이 독립적인 항목을 만드는 것이 좋습니다.보유자), 더 쉽고 별도의 수업이 필요 없습니다.
간단한 답변:아이템을 많이 보여주고 싶은 상황에서 리사이클러뷰를 사용해야 하며, 아이템의 개수는 동적입니다.ListView는 항목 수가 항상 동일하고 화면 크기로 제한된 경우에만 사용해야 합니다.
안드로이드 라이브러리만 염두에 두고 생각하기 때문에 더 힘들어집니다.
오늘날 사용자 자신의 어댑터를 구축하는 데 도움이 되는 수많은 옵션이 존재하며, 선택, 재정렬, 애니메이션, 분할기, 바닥글 추가, 헤더 등을 사용할 수 있는 동적 아이템의 목록과 그리드를 쉽게 구축할 수 있습니다.
겁먹지 말고 리사이클러뷰를 시도해보세요. 웹에서 다운로드한 100개의 항목 목록을 리스트뷰와 리사이클러뷰로 만드는 것을 좋아하게 될 수 있습니다. 스크롤을 시도하면 UX(사용자 경험)의 차이를 볼 수 있습니다. 테스트 앱이 실행하기도 전에 멈출 수도 있습니다.
이 두 라이브러리를 통해 쉬운 어댑터를 만들 수 있는지 확인하는 것이 좋습니다.
ListView와 RecyclerView에는 많은 차이점이 있지만 특히 다음 사항에 유의해야 합니다.
- 더 뷰홀더 패턴은 ListView에서 완전히 선택사항이지만 RecyclerView로 구워집니다.
- ListView는 세로 스크롤만 지원하지만 RecyclerView는 세로 스크롤 목록에만 국한되지 않습니다.
리사이클러뷰는 호환성 패키지의 일부라는 점만 강조하고 싶습니다.즉, 모든 애플리케이션은 OS의 기능과 코드를 사용하는 대신 자체 리사이클러뷰 구현을 수행합니다.RecycleerView와 유사한 기능은 미래 OS의 일부가 될 수 있으며 여기서 사용하는 것이 도움이 될 수 있습니다.예를 들어 하모니 OS가 곧 출시될 예정입니다.호환성 패키지 라이선스는 향후 변경될 수 있으며 시사점이 될 수 있습니다.단점이 많은 여름:
- 허가증
- 특히 많은 앱의 일부로서 더 큰 풋 프린트
- OS에서 오는 일부 기능이 있을 경우 효율성이 떨어짐
하지만 좋은 점은 리사이클러뷰에서 일부 기능을 스와이핑 아이템으로 구현했다는 점입니다.
위에서 말한 모든 것은 고려해야 합니다.
언급URL : https://stackoverflow.com/questions/26728651/recyclerview-vs-listview
'source' 카테고리의 다른 글
malloc() 통화량을 최소화하면 성능이 향상됩니까? (0) | 2023.11.06 |
---|---|
메모리에서 FLOOT 번호를 C로 표현하는 방법 (0) | 2023.11.06 |
meteor .gitignore 파일에 무엇을 넣어야 합니까? (0) | 2023.11.06 |
열에 대한 최소 길이 제약 조건 (0) | 2023.11.06 |
angular.js - 유럽 표기법의 10진수 (0) | 2023.11.06 |