programing

리사이클러뷰를 사용하여 ListView를 대체해야 합니까?

newnotes 2023. 9. 12. 20:40
반응형

리사이클러뷰를 사용하여 ListView를 대체해야 합니까?

Android 문서는 다음과 같이 말합니다.

RecyclerView 위젯은 ListView의 보다 고급스럽고 유연한 버전입니다.이 위젯은 제한된 보기 수를 유지하여 매우 효율적으로 스크롤할 수 있는 대용량 데이터 세트를 표시하기 위한 컨테이너입니다.사용자 작업이나 네트워크 이벤트에 따라 런타임에 요소가 변경되는 데이터 컬렉션이 있는 경우 RecyclerView 위젯을 사용

정말로.ListView효율성이 중요하지 않다면 위의 모든 것을 할 수 있고, 우리는 우리가 사용할 때 많은 문제를 발견했습니다.RecyclerView대체할ListView:

  1. 목록 항목 선택을 위한 onItemClickListener() - 솔루션이 없습니다.

  2. 목록 항목 간 구분자 없음 - 솔루션

  3. 중첩 선택기가 내장되어 있지 않으며, 목록 항목 클릭 시 시각적 피드백이 없습니다 - 솔루션

  4. 목록 헤더에 대한 addHeaderView 없음 - 솔루션

아마 더 많은 문제들이...

그래서 우리가 사용할 때.RecyclerView대체할ListView, 우리는 같은 효과에 도달하기 위해 훨씬 더 많은 코딩을 해야 합니다.ListView.

질문:.

  • 우리가 대체할 가치가 있습니까?ListView와 함께RecyclerView완전?
  • 만약 그렇지 않다면 우리는 어떤 경우에 사용하는 것이 더 나을까요?RecyclerView대신ListView, 그 반대도 마찬가지입니까?

ListView가 사용자에게 적합한 경우 마이그레이션할 이유가 없습니다.새 UI를 작성하는 경우 RecyclerView를 사용하는 것이 더 나을 수 있습니다.

리사이클러뷰는 목록을 사용자 지정해야 하거나 더 나은 애니메이션을 원할 때 강력합니다.ListView의 이러한 편리한 방법은 사람들에게 많은 폐를 끼쳤기 때문에 RecyclerView는 사람들에게 보다 유연한 솔루션을 제공합니다.

마이그레이션에 필요한 주요 변경 사항은 어댑터에 있습니다.전화를 계속하시려면notifyDataSetChanged, 애니메이션과 바인딩의 대부분의 이점을 잃게 됩니다.하지만 상세 알림 이벤트(추가/제거/이동/업데이트)를 발송하도록 어댑터를 변경할 수 있다면 훨씬 더 나은 애니메이션과 성능을 얻을 수 있습니다.이러한 이벤트를 통해 RecyclerView는 올바른 애니메이션을 선택할 수 있으며 불필요한 애니메이션을 방지할 수 있습니다.onBind하면 큰 수 아이템 뷰가 복잡하면 큰 혜택을 받을 수 있습니다.또한 앞으로 RecyclerView 주변에 더 많은 구성 요소가 있을 것입니다.

1 인터페이스를 사용하여 클릭 청취자를 제공할 수 있습니다.ListViews에서도 이 기법을 사용합니다.
2 분할자 없음: 행에 match_parent의 너비와 높이가 1dp인 뷰를 추가하고 배경색을 지정하기만 하면 됩니다.
3 행 배경에 상태 목록 선택기를 사용하기만 하면 됩니다.
4 addHeaderView는 ListView에서도 피할 수 있습니다. 보기 밖에 헤더를 넣기만 하면 됩니다.

따라서 효율성이 문제라면 목록 보기를 재활용 보기로 대체하는 것이 좋습니다.

저는 최근까지도 아주 간단한 목록을 위해 ListView를 사용하고 있었습니다.예를 들어 텍스트 옵션의 간단한 목록을 표시하려면...

저는 성능이 중요하지 않은 경우 코드가 적은 단순한 ListView를 만드는 것이 더 좋다는 '인적 요인'에 근거한 결정을 내렸습니다.나는 종종 대학에서 "나의 스승이자 파스칼의 발명가인 위대한 니클라우스 워스는 한 프로그램이 50줄 이상의 코드를 가지고 있다면 그것은 틀림없이 잘못된 것이라고 말하곤 했습니다.."

하지만 리스트뷰를 사용하지 않게 된 것은 최근 상대적 배치(Relative Layout)와 함께 Android Studio 설계 도구의 "레거시(Legacy)" 범주로 이동했다는 것입니다.

https://developer.android.com/reference/android/widget/ListView

나는 이것이 '비하'의 '부드러운' 형태라고 생각합니다.실제로 사용이 중단되고 모든 양심적인 개발자들이 자신들의 코드를 리사이클러뷰로 옮긴다면 너무 파괴적일 것입니다.

또한 목록 보기 도입부는 상단에 리사이클러뷰가 더 나은 옵션이라고 경고합니다. "목록을 표시하는 데 보다 현대적이고 유연하며 성능이 뛰어난 접근 방식을 사용하려면 리사이클러뷰를 사용하십시오."

또한 ListView의 가이드는 커서 로더에 대해 여전히 언급하고 있지만 getSupportCursorLoader() 자체는 API 28에서 더 이상 사용되지 않습니다.

Android Studio의 최근 향상된 기능:

만들기 - -> -> -> -> -> ()

이를 통해 기본 텍스트로 채워진 완전하게 작동하는 리사이클러 뷰를 얻을 수 있습니다.ListView를 사용하는 마지막 진짜 이유는 이제 기본 리사이클러뷰를 설정하는 것이 그만큼 쉽기 때문입니다.

요약하자면, ListView에 '레거시'라는 라벨을 붙이는 것이 가치 하락의 한 단계이기 때문에 새로운 개발에 전혀 사용할 생각이 없습니다.

ListView를 사용해도 문제가 없는 경우는 목록이 정적인 경우뿐입니다.예를 들어, 네비게이션.

다른 모든 경우 RecyclerView를 사용합니다. 때문에 변경는 RecyclerView와 함께 과 ListView에서 이 더 .RecyclerView.ItemAnimator), 사용자 지정 레이아웃.

또한 카드뷰를 사용하고 싶다면 그것만이 유일한 방법이라고 생각합니다.

가장 좋은 대안은 기본 어댑터를 사용하는 것입니다.뷰홀더 사용 패턴을 지원하며 제 것은 비트맵과 버튼이 있는 100개 이상의 행을 포함하고 있으며 매우 부드럽게 실행됩니다.

언급URL : https://stackoverflow.com/questions/28392554/should-we-use-recyclerview-to-replace-listview

반응형