RecyclerView를 사용하여 ListView를 바꿔야합니까?
Android Docs의 말 :
RecyclerView 위젯은 ListView의보다 유연하고 유연한 버전입니다. 이 위젯은 제한된 수의보기를 유지하여 매우 효율적으로 스크롤 할 수있는 큰 데이터 세트를 표시하기위한 컨테이너입니다. 사용자 조치 또는 네트워크 이벤트에 따라 런타임에 요소가 변경되는 데이터 콜렉션이있는 경우 RecyclerView 위젯을 사용하십시오.
ListView
효율성이 중요하지 않으면 실제로 위의 모든 작업을 수행 할 수 있으며 RecyclerView
교체에 사용할 때 많은 문제가 발견되었습니다 ListView
.
목록 항목 선택에 대한 onItemClickListener ()는 없다 - 솔루션
목록 항목 사이에 구분선 없음- 솔루션
내장 오버랩 선택기가 없으며 목록 항목을 클릭 할 때 시각적 피드백이 없습니다- 솔루션
목록 헤더에 addHeaderView 가 없습니다 .- 솔루션
더 많은 문제가있을 수 있습니다 ...
따라서 RecyclerView
대체 ListView
할 때와 동일한 효과를 얻으려면 추가 코딩 작업을 많이 수행해야 ListView
합니다.
질문:
- 우리
ListView
가RecyclerView
완전히 대체 할 가치가 있습니까?- 그렇지 않다면 어떤 경우에 우리는
RecyclerView
대신에 더 잘 사용해야ListView
합니까?
ListView가 효과가 있다면 마이그레이션 할 이유가 없습니다. 새 UI를 작성하는 경우 RecyclerView를 사용하는 것이 좋습니다.
RecyclerView는 목록을 사용자 정의하거나 더 나은 애니메이션을 원할 때 강력합니다. ListView의 이러한 편리한 방법은 사람들에게 많은 문제를 일으켰으므로 RecyclerView가 더 유연한 솔루션을 제공하는 이유입니다.
이주에 필요한 주요 변경 사항은 어댑터에 있습니다. 를 계속 호출 notifyDataSetChanged
하려면 대부분의 애니메이션 및 바인딩 이점을 잃게됩니다. 그러나 자세한 알림 이벤트 (추가 / 제거 / 이동 / 업데이트)를 전달하도록 어댑터를 변경할 수 있으면 애니메이션과 성능이 훨씬 향상됩니다. 이러한 이벤트를 통해 RecyclerView는 올바른 애니메이션을 선택할 수 있으며 불필요한 onBind
호출을 피할 수 있습니다 . 항목보기가 복잡한 경우 큰 이점을 얻을 수 있습니다. 또한 RecyclerView 주변에 더 많은 구성 요소가 있습니다.
나에 따르면, ListView가 앱의 현재 요구를 모두 충족시키고 모든 사용 사례를 충족시키는 경우 RecyclerView로 대체 할 필요가 없습니다.
RecyclerView는 개발자의 복잡성을 증가시키는 비용으로 개발자에게 큰 힘을 제공합니다. ListView에서 쉽게 수행 할 수있는 특정 작업이 이제는 많은 불필요한 노력을 기울일 수 있습니다.
그러나 레이아웃을 가로, 세로, 격자 또는 지그재그 격자로 매끄럽게 변경할 수있는 놀라운 LayoutManager 기능과 같이 ListView로는 할 수없는 일이 많이 있습니다.
이 주제에 대한 자세한 답변을 여기 에 썼습니다 .
1 인터페이스를 사용하여 클릭 리스너를 제공 할 수 있습니다. 이 기술도 ListView와 함께 사용합니다.
2 없음 디바이더 : 간단히 폭으로 행 뷰에 추가 match_parent 과의 높이 1DP 및 그것에게주는 배경 색상을 .
3 행 배경에 StateList 선택기를 사용하십시오.
4 addHeaderView는 ListViews에서도 피할 수 있습니다 . 헤더를 뷰 외부에 두기 만하면 됩니다.
따라서 효율성이 문제라면 yes 라면 ListView를 RecyclerView로 바꾸는 것이 좋습니다.
최근까지도 매우 간단한 목록에 여전히 ListView를 사용했습니다. 예를 들어 간단한 텍스트 옵션 목록을 표시하려면 ...
나는 '인적 요소'에 대한 결정을 기반으로, 성능이 중요하지 않은 경우 적은 코드로 간단한 ListView를 만드는 것이 좋습니다. 나는 종종 대학 교수가 "파스칼의 발명가 인 위대한 Niclaus Wirth 선생님은 프로그램에 50 줄 이상의 코드가 있다면 틀렸을 것이라고 말했다."
그러나 ListView 사용을 중단하게 된 것은 최근 RelativeLayout과 함께 Android Studio 디자인 도구에서 "레거시"범주로 이동 한 것입니다.
나는 이것이 '소프트'형태의 '더 이상 사용되지 않는 것'이라고 생각합니다. 실제로 더 이상 사용되지 않고 모든 양심적 인 개발자가 코드를 RecyclerView로 이동하면 너무 혼란 스럽습니다.
또한 ListView에 대한 소개는 맨 위에 RecyclerView가 더 나은 옵션이라고 경고합니다.
https://developer.android.com/reference/android/widget/ListView
또한 ListView 가이드는 여전히 커서 로더에 대해 이야기하고 있지만 getSupportCursorLoader () 자체는 API 28에서 더 이상 사용되지 않습니다.
https://developer.android.com/guide/topics/ui/layout/listview
Android Studio의 최근 개선 사항 :
파일-> 새로 만들기-> 조각-> 조각 (목록)
이를 통해 기본 텍스트로 채워진 RecylerView가 완벽하게 작동합니다. 기본 RecylerView를 쉽게 설정할 수 있기 때문에 ListView를 사용하는 마지막 실제 이유를 제거합니다.
요약하면 '레거시'라는 레이블을 지정하는 것이 더 이상 사용되지 않기 때문에 ListView를 새로운 개발에 전혀 사용하지 않을 것입니다.
여전히 ListView를 사용하는 것이 좋은 경우는 목록이 동적이거나 네트워크 이벤트의 영향을받지 않는 경우입니다. 예를 들어 : navigation.
다른 용도로는 RecyclerView가 ListView를 이클립스합니다. RecyclerView는 재활용에만 관심이 있기 때문에 위치 / 재 배열 변경, 애니메이션 (실제로는 RecyclerView.ItemAnimator와 함께 제공됨), 사용자 지정 레이아웃 (주식에는 StaggeredGrid가 있음)과 같이 ListView에서 밀접하게 연결된 시각적 관련 작업을 수행하는 것이 더 쉬울 것입니다 이전 목록 또는 그리드 스타일이지만 더 확장되는 라이브러리 도 있습니다).
또한 CardView를 사용하려면 이것이 유일한 방법이라고 생각합니다 ( 카드 또는 목록을 사용할 때 좋은 독서 ).
좋은 대안은 BaseAdapter를 사용하는 것입니다. Viewholder 패턴 사용을 지원하며 비트 맵과 버튼이있는 100 개 이상의 행이 포함되어 있으며 매우 부드럽게 실행됩니다.
참고 URL : https://stackoverflow.com/questions/28392554/should-we-use-recyclerview-to-replace-listview
'Programing' 카테고리의 다른 글
강조 표시된 상태에서 UIButton의 배경색을 변경하는 방법은 무엇입니까? (0) | 2020.04.19 |
---|---|
Windows에서 큰 폴더를 삭제하는 가장 빠른 방법은 무엇입니까? (0) | 2020.04.19 |
Chrome의 요소 관리자에서 CSS 규칙이 회색으로 표시되면 무엇을 의미합니까? (0) | 2020.04.19 |
병합 정렬 알고리즘을 사용하여 내부 정렬 방법? (0) | 2020.04.19 |
장고 모델 () vs. Model.objects.create () (0) | 2020.04.19 |