Programing

RecyclerView와 ListView

lottogame 2020. 3. 28. 10:14
반응형

RecyclerView와 ListView


안드로이드 개발자 ( 목록 및 카드 만들기 )에서 :

RecyclerView 위젯은 ListView의보다 유연하고 유연한 버전입니다.

좋아, 그것은 시원하게 들리지만,이 예제 사진을 보았을 때, 나는이 두 가지의 차이점에 대해 정말로 혼란스러워했습니다.

여기에 이미지 설명을 입력하십시오

위의 그림은 ListView사용자 정의 어댑터 사용하여 쉽게 만들 수 있습니다 .

어떤 상황에서 사용해야 RecyclerView합니까?


RecyclerViewListView개선 으로 작성 되었으므로 예, ListView제어 기능이 있는 첨부 목록을 만들 수는 있지만 사용하는 RecyclerView것이 더 쉽습니다.

  1. 위 / 아래로 스크롤하는 동안 셀을 재사용 합니다. ListView어댑터 에서 뷰 홀더를 구현하면 가능 하지만 선택 사항이지만 RecycleView어댑터를 작성하는 기본 방법입니다.

  2. 컨테이너에서 목록을 분리 하여 런타임에 목록 항목을 다른 컨테이너 (linearLayout, gridLayout)에 쉽게 설정하여 설정할 수 LayoutManager있습니다.

예:

mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
  1. 공통 목록 작업에 애니메이션을 적용합니다 ItemAnimator. 애니메이션이 분리되어에 위임됩니다 .

에 대한 자세한 내용 RecyclerView이 있지만 이러한 요점이 주요 사항이라고 생각합니다.

결론적으로, RecyclerView우려의 위임 패턴을 따르는 "목록 데이터"를 처리하기위한보다 융통성있는 제어는 재활용 품목이라는 하나의 작업만을 떠난다.


목록보기의 성능을 높이려면 홀더 패턴을 구현해야하며 목록을 여러 가지 종류의보기로 채우려는 경우 특히 엉망입니다.

RecyclerView는이 패턴을 베이킹하여 혼란스럽게 만듭니다. 또한 그리드와 같이 직선적이지 않은 다른 레이아웃을보다 쉽게 ​​처리 할 수 ​​있도록 유연성이 뛰어납니다.


ListView의 조상 RecyclerView입니다. ListView하지 않았거나 잘하지 못한 것들이 많이있었습니다 . 단점을 모으고 ListView문제를 다른 도메인으로 추상화하여 문제를 해결했다면 리사이클 러보기와 같은 결과가 나타납니다. ListViews의 주요 문제점은 다음과 같습니다.

  • View동일한 항목 유형에 재사용을 강요하지 않았습니다 (에서 사용되는 어댑터 중 하나를 살펴보십시오 ListView. getView 메소드를 연구하면 프로그래머가 모든 행에 대해 새보기를 작성하는 것을 막을 수있는 것은 아무것도 없습니다. convertView변수 를 통해 )

  • 비용이 많이 드는 findViewById사용을 막지 못함 (위에서 언급 한 것처럼 뷰를 재활용하는 경우에도 개발자가 findViewById하위 뷰의 표시된 내용을 업데이트 하도록 호출 할 수있었습니다. ViewHolder패턴 의 주요 목적은 호출 ListViews을 캐시하는 것이 었습니다 findViewById. 플랫폼의 일부가 아니기 때문에 알고 있다면 사용 가능)

  • 행으로 표시되는 뷰가있는 세로 스크롤 만 지원됨 (리사이클 러보기는 뷰의 위치와 이동 방법에 신경 쓰지 않고로 추상화됩니다 LayoutManager. 따라서 리사이클 러는 ListView위와 같이 기존 과 같은 것을 지원할 수 GridView있지만 그것에 국한되지 않고, 더 많은 일을 할 수 있지만,이를 위해서는 프로그래밍 작업을해야합니다).

  • 추가 / 제거 할 애니메이션은 고려 된 사용 사례가 아닙니다. 이 문제를 해결하는 방법을 알아내는 것은 전적으로 귀하의 몫입니다 (RecyclerView 비교. 어댑터 클래스 통지 * 메소드 오퍼링 v. 아이디어를 얻기위한 ListViews 비교).

요컨대 , 더 많은 코딩을 수행해야 할 수도 있지만 RecyclerView더 유연하게 사용할 ListView수 있습니다.


RecyclerView유사한 방법으로 모든 어댑터 기반 뷰를 렌더링 할 준비가되어 새로운 뷰 그룹이다. 의 후임자라고 가정 ListView and GridView하고에서 찾을 수 있습니다 latest support-v7 version. RecyclerView개발 된 확장 하지만 약간의 통증 - 인 - 더 - 엉덩이를 투여하지 않고, 그래서 당신이 생각할 수있는 레이아웃의 모든 종류를 만들 수 있습니다 마음입니다.

Antonio leiva의 답변

 compile 'com.android.support:recyclerview-v7:27.0.0'

RecyclerView참입니다 powerful view보다 ListView. 자세한 내용은 이 페이지를 방문 하십시오 .


다음은 RecyclerView와 ListView의 주요 요점 / 차이점입니다. 현명하게 전화하십시오.

ListView가 효과가 있다면 마이그레이션 할 이유가 없습니다. 새 UI를 작성하는 경우 RecyclerView를 사용하는 것이 좋습니다.

RecylerView에는 ViewHolder가 내장되어 있으므로 listView와 같이 자체 구현할 필요가 없습니다. 특정 인덱스에서도 통지 지원

항목 추가 또는 제거 애니메이션과 같은 작업은 이미 수행하지 않아도 RecyclerView에 이미 구현되어 있습니다.

레이아웃 관리자를 RecyclerView와 연결할 수 있습니다. 이것은 RecycleView에서 임의의 뷰를 얻는 데 사용할 수 있지만 ListView에서는 제한적이었습니다. ListView에서 사용 가능한 유일한 뷰 유형은 세로 ListView입니다. 수평 ListView를 구현하는 공식적인 방법은 없습니다. 이제 RecyclerView를 사용하여

i) 수직 및 수평 목록을 모두 지원하는 LinearLayoutManager, ii) 엇갈린 목록과 같이 Pinterest를 지원하는 StaggeredLayoutManager, iii) GridLayoutManager-갤러리 앱에서 볼 수있는 그리드 표시를 지원합니다.

가장 좋은 점은 원하는대로이 모든 것을 동적으로 수행 할 수 있다는 것입니다.


주요 장점 :

ViewHolder에서 기본적으로 사용할 수 없습니다 ListView. 내부에 명시 적으로 만들 것 getView()입니다. RecyclerView내장했다 Viewholder.


목록보기보다 RecyclerView의 장점 :

  1. 기본적으로 ViewHolder를 포함합니다.

  2. 쉬운 애니메이션.

  3. 수평, 격자 및 지그재그 형 레이아웃 지원

recyclerView에 비해 listView의 장점 :

  1. 분배기를 쉽게 추가 할 수 있습니다.

  2. 간단한 일반 목록을 위해 내장형 arrayAdapter를 사용할 수 있습니다

  3. 머리글 및 바닥 글을 지원합니다.

  4. OnItemClickListner를 지원합니다.


나는 그들이 가지고있는 가장 큰 차이점 ListView은 항목을 만들거나 넣을 때 항목의 위치 찾는 반면에 항목 RecyclerView의 유형을 찾는 것입니다. 동일한 유형으로 작성된 다른 항목이 RecyclerView있으면 다시 작성하지 않습니다. 첫 번째 어댑터를 요청한 다음 재활용 풀에 "그렇습니다. 비슷한 유형을 만들었습니다"라고 표시되면 RecyclerView동일한 유형을 만들지 않습니다. ListView이런 종류의 풀링 메커니즘이 없습니다.


위의 차이점 외에도 다음과 같은 몇 가지 사항이 더 있습니다.

  1. RV는 뷰 생성과 뷰에 대한 데이터 바인딩을 분리합니다. LV에서 데이터를 바인딩하기 전에 convertView가 널인지보기를 작성해야합니다. 따라서 RV의 경우보기는 필요할 때만 작성되지만 LV의 경우 변환보기 확인을 놓칠 수 있으며 매번보기를 작성합니다.

  2. LayoutManager를 사용하면 그리드와 목록 간 전환이 더욱 쉬워졌습니다.

  3. 단일 항목 만 변경하더라도 모든 항목을 통지하고 업데이트 할 필요가 없습니다.

  4. LV의 경우 뷰 캐싱을 구현해야했습니다. 기본적으로 RV로 제공됩니다. (뷰 캐싱 n 재활용과는 차이가 있습니다.)

  5. RV의 경우 매우 쉬운 아이템 애니메이션.


필자의 의견 RecyclerView으로는 목록보기에 사용 된 재활용 패턴의 문제를 해결하기 위해 개발자의 삶을 어렵게 만들었습니다. 다른 모든 것들은 더 많거나 적을 수 있습니다. 예를 들어 나는에 대해 동일한 어댑터를 사용 ListView하고 GridView는 모두 조회 수에 상관 없습니다 getView, getItemCount, getTypeCount이 같은 그래서 사용된다. 그리드 어댑터를 사용 하거나 사용 RecyclerView하는 경우 이미 필요하지 않습니다 . 목록보기에서 패턴을 올바르게 구현하면에 비해 크게 개선되지 않습니다 .ListViewListAdapterGridViewViewHolderRecycleView


나는 조금 함께 일 RecyclerView했지만 여전히 선호합니다 ListView.

  1. 물론 둘 다 사용 ViewHolders하므로 이점이 없습니다.

  2. A RecyclerView는 코딩이 더 어렵다.

  3. A RecyclerView에는 머리글과 바닥 글이 포함되어 있지 않으므로 빼기입니다.

  4. A ListView는 ViewHolder를 만들 필요가 없습니다. 섹션이나 하위 헤더가있는 목록을 원하는 경우 (ViewHolder없이) 독립적 인 항목을 만드는 것이 좋습니다. 별도의 클래스가 필요하지 않습니다.


  1. 인터페이스를 사용하여 클릭 리스너를 제공 할 수 있습니다. 이 기술도 ListView와 함께 사용합니다.
  2. 분배기 없음 : 너비가 match_parent이고 높이가 1dp 인 뷰를 행에 추가하고 배경색을 지정하십시오.
  3. 행 배경에 StateList 선택기를 사용하면됩니다.
  4. addHeaderView는 ListViews에서도 피할 수 있습니다. 헤더를 뷰 외부에두기 만하면됩니다.

따라서 효율성이 염려된다면 ListView를 RecyclerView로 바꾸는 것이 좋습니다.


간단한 대답 : 많은 항목을 표시하려는 경우 RecyclerView를 사용해야하며 그 수는 동적입니다. ListView는 항목 수가 항상 동일하고 화면 크기로 제한된 경우에만 사용해야합니다.

당신은 안드로이드 라이브러리를 염두에두고 생각하기 때문에 더 어렵다는 것을 알게됩니다.

오늘날에는 자체 어댑터를 빌드하는 데 도움이되는 많은 옵션이 있으며, 선택, 재정렬, 애니메이션, 디바이더 사용, 바닥 글, 헤더 등을 추가 할 수있는 동적 항목의 목록 및 그리드를 쉽게 작성할 수 있습니다.

겁내지 말고 RecyclerView를 사용해보십시오. 웹에서 다운로드 한 100 가지 항목 (Facebook 뉴스와 같은)을 ListView 및 RecyclerView에서 만들기를 좋아할 수 있습니다 .UX (사용자)의 차이점을 볼 수 있습니다 경험) 스크롤하려고하면 테스트 앱이 중지되기 전에 중지 할 수 있습니다.

쉬운 어댑터를 만들기 위해이 두 라이브러리를 확인하는 것이 좋습니다.

mikepenz의 FastAdapter

davideas의 FlexibleAdapter


리사이클 러보기 정보

RecyclerView도입되었습니다 Android 5.0 (Lollipop). 지원 라이브러리에 포함되어 있습니다 . 따라서 Android API 레벨 7과 호환됩니다.

마찬가지로으로 ListView, RecyclerView’s주요 아이디어는 성능 친화적 인 방식으로 기능을 목록으로 제공하는 것입니다. 이 뷰 이름의 '리사이클 러'부분은 우연의 일치가 아닙니다. RecyclerView실제로 현재 일하고있는 항목을 재활용 할 수 있습니다. 재활용 프로세스는 View Holder 라는 패턴 덕분에 수행됩니다 .

RecyclerView의 장단점

장점 :

  • 항목 추가, 업데이트 및 제거를위한 통합 애니메이션
  • ViewHolder 패턴을 사용하여 뷰를 재활용합니다.
  • 그리드와리스트 모두 지원
  • 수직 및 수평 스크롤 지원
  • DiffUtil과 함께 사용할 수 있습니다

단점 :

  • 복잡성을 추가
  • OnItemClickListener 없음

목록보기 정보

ListView매우 안드로이드의 시작 이후 주변왔다. 그것도 사용할 수 있으며 API Level 1와 같은 목적을 가지고 RecyclerView있습니다.

ListView의 사용법은 실제로 매우 간단합니다. 이러한 측면에서 후계자와는 다릅니다. 학습 곡선은 RecyclerView의 학습 곡선보다 부드럽습니다. 따라서 파악하기가 더 쉽습니다. LayoutManager, ItemAnimator 또는 DiffUtil과 같은 것을 처리 할 필요가 없습니다.

ListView의 장단점

장점 :

  • 간단한 사용법
  • 기본 어댑터
  • 사용 가능한 OnItemClickListener
  • 그것은의 기초입니다 ExpandableListView

단점 :

  • ViewHolder 패턴의 사용을 수용하지 않습니다

참고 URL : https://stackoverflow.com/questions/26728651/recyclerview-vs-listview

반응형