RecyclerView so với ListView


295

Từ nhà phát triển Android ( Tạo danh sách và thẻ ):

Tiện ích RecyclerView là phiên bản ListView tiên tiến và linh hoạt hơn.

Được rồi, nghe có vẻ hay, nhưng khi tôi nhìn thấy bức ảnh ví dụ này, tôi đã thực sự bối rối về sự khác biệt giữa hai cái này.

nhập mô tả hình ảnh ở đây

Hình trên có thể dễ dàng được tạo bằng ListViewcách sử dụng bộ điều hợp tùy chỉnh.

Vì vậy, trong tình huống nào nên sử dụng RecyclerView?



1
@ Dev786: Tôi đề nghị bạn thêm một nhận xét ở đây giải thích chi tiết những gì bạn cảm thấy còn thiếu trong nhiều câu trả lời hiện có cho câu hỏi này.
CommonsWare

Câu trả lời:


374

RecyclerViewđã được tạo như một ListViewsự cải tiến, vì vậy, bạn có thể tạo một danh sách đính kèm có ListViewkiểm soát, nhưng việc sử dụng RecyclerViewsẽ dễ dàng hơn vì nó:

  1. Sử dụng lại các ô trong khi cuộn lên / xuống - điều này là có thể với việc triển khai Chế độ xem trong ListViewbộ điều hợp, nhưng đó là một tùy chọn, trong khi RecycleViewđó là cách viết bộ điều hợp mặc định.

  2. Liệt kê danh sách từ bộ chứa của nó - vì vậy bạn có thể dễ dàng đặt các mục danh sách vào thời gian chạy trong các bộ chứa khác nhau (linearLayout, GridLayout) với cài đặt LayoutManager.

Thí dụ:

mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
  1. Hoạt hình danh sách hành động phổ biến - Ảnh động được tách rời và ủy quyền ItemAnimator.

Có nhiều hơn về RecyclerView, nhưng tôi nghĩ những điểm này là những điểm chính.

Vì vậy, để kết luận, RecyclerViewlà một điều khiển linh hoạt hơn để xử lý "danh sách dữ liệu" theo mô hình ủy thác mối quan tâm và chỉ để lại một nhiệm vụ duy nhất - tái chế các mặt hàng.


16
Trách nhiệm chính của chế độ xem danh sách là 1.) sắp xếp trực quan các mục trong khu vực nhất định và tốt nhất là 2.) các mục sử dụng lại. Với RecylerView, điều này sẽ chia thành các trách nhiệm duy nhất - tái chế chế độ xem tái chế và được bố trí Trình quản lý bố trí sắp xếp các mục trên màn hình. Nói cách khác, chế độ xem tái chế không biết / quan tâm đến việc đặt vật phẩm ở đâu trên màn hình, nó chỉ quan tâm đến việc tái chế chúng. Từ tài liệu android: "Bằng cách thay đổi Trình quản lý bố cục, RecyclerView có thể được sử dụng để triển khai danh sách cuộn theo chiều dọc tiêu chuẩn, lưới thống nhất, lưới so le, bộ sưu tập cuộn theo chiều ngang và hơn thế nữa."
daneejela

32
"Tái sử dụng các ô trong khi cuộn lên / xuống": Theo tôi biết điều này là hoàn toàn sai bởi vì điều này xảy ra ngay cả trong listview mà không có người xem.
Ruban

16
Việc sử dụng chính của trình giữ khung nhìn trong listview là Mã của bạn có thể gọi findViewById () thường xuyên trong quá trình cuộn ListView, có thể làm chậm hiệu suất. Ngay cả khi Bộ điều hợp trả về chế độ xem tăng cao để tái chế, bạn vẫn cần tìm kiếm các yếu tố và cập nhật chúng. Một cách xung quanh việc sử dụng lặp lại findViewById () là sử dụng mẫu thiết kế "người giữ chế độ xem". Đối tượng ViewHolder lưu trữ từng chế độ xem thành phần bên trong trường thẻ của Bố cục, do đó bạn có thể truy cập ngay vào chúng mà không cần phải tìm kiếm chúng nhiều lần.
Ruban

7
Điều tôi cố gắng nói là Row sẽ được tái chế ngay cả khi bạn triển khai listview mà không có người xem. Đó là tài sản và lợi thế của listview. Đó là những gì họ tạo ra listview.
Ruban

họ không làm gì đặc biệt, những tính năng này có thể được thêm vào bởi bất cứ ai. bạn có thể mở rộng ListView và baseAd CHƯƠNG và thêm bất kỳ tính năng nào vào nó nếu bạn muốn. thực sự không có sự khác biệt giữa hai điều này
MDP

39

Để các chế độ xem danh sách có hiệu suất tốt, bạn sẽ cần triển khai mẫu chủ sở hữu và điều đó dễ gây rối, đặc biệt là khi bạn muốn đưa vào danh sách một số loại chế độ xem khác nhau.

RecyclerView đưa mô hình này vào, khiến cho việc gây rối trở nên khó khăn hơn. Nó cũng linh hoạt hơn, giúp dễ dàng xử lý các bố cục khác nhau, không phải là tuyến tính thẳng, giống như lưới.


6
Đúng ! , nên có nhiều cuộc thảo luận về thời điểm KHÔNG nên sử dụng recyclerview. Nếu các hàng của bạn có nội dung được thêm động dựa trên dữ liệu của mô hình và bạn sử dụng chế độ xem Recycler, BOOM.
Rana Deep

1
Bạn sẽ có thể thêm nội dung động dựa trên dữ liệu mô hình. Bạn sẽ chỉ cần thiết lập các chế độ xem khác nhau cho bất kỳ loại nội dung nào bạn muốn hỗ trợ.
CaptRespect

36

ListViewlà tổ tiên để RecyclerView. Có nhiều thứ ListViewkhông làm được hoặc không làm tốt. Nếu bạn tập hợp những thiếu sót của ListViewvà giải quyết vấn đề bằng cách trừu tượng hóa các vấn đề thành các lĩnh vực khác nhau, bạn sẽ kết thúc với một cái gì đó như chế độ xem của người tái chế. Dưới đây là các điểm vấn đề chính với ListViews:

  • Không thực thi ViewTái sử dụng cho các loại mục tương tự (nhìn vào một trong các bộ điều hợp được sử dụng trong một ListView, nếu bạn nghiên cứu phương thức getView, bạn sẽ thấy rằng không có gì ngăn lập trình viên tạo chế độ xem mới cho mỗi hàng ngay cả khi một hàng được truyền vào thông qua convertViewbiến)

  • Không ngăn chặn việc findViewByIdsử dụng tốn kém (Ngay cả khi bạn đang tái chế các chế độ xem như đã lưu ý ở trên, các nhà phát triển có thể gọi findViewByIdđể cập nhật nội dung được hiển thị của chế độ xem trẻ em. Mục đích chính của ViewHoldermẫu ListViewslà lưu trữ các findViewByIdcuộc gọi. Tuy nhiên, đây chỉ là có sẵn nếu bạn biết về nó vì nó hoàn toàn không phải là một phần của nền tảng)

  • Chỉ được hỗ trợ Cuộn dọc với Chế độ xem được hiển thị theo hàng (Chế độ xem của Trình tái chế không quan tâm đến vị trí của các chế độ xem và cách chúng được di chuyển, nó được trừu tượng hóa thành một LayoutManager. Do đó, Trình tái chế có thể hỗ trợ truyền thống ListViewnhư được hiển thị ở trên, cũng như những thứ như GridView, nhưng nó không bị giới hạn bởi điều đó, nó có thể làm được nhiều hơn, nhưng bạn phải thực hiện công việc lập trình để biến nó thành hiện thực).

  • Ảnh động để thêm / xóa không phải là trường hợp sử dụng đã được xem xét. Bạn hoàn toàn có thể tìm ra cách thực hiện điều này (so sánh RecyclerView. Các lớp Adaptor thông báo * cung cấp phương thức v. ListViews để có ý tưởng).

Nói tóm lại RecyclerViewlà một cách linh hoạt hơn ListView, mặc dù nhiều mã hóa có thể cần phải được thực hiện từ phía bạn.


20

Đây RecyclerViewlà một Viewgroup mới được chuẩn bị để hiển thị bất kỳ chế độ xem dựa trên bộ điều hợp nào theo cách tương tự. Nó được cho là người kế thừa ListView and GridViewvà nó có thể được tìm thấy trong latest support-v7 version. Nó RecyclerViewđã được phát triển với khả năng mở rộng trong tâm trí, vì vậy có thể tạo ra bất kỳ loại bố cục nào bạn có thể nghĩ ra, nhưng không phải không có một chút liều thuốc giảm đau.

Câu trả lời được lấy từ Antonio leiva

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

RecyclerViewthực sự là một powerful viewhơn ListView. Để biết thêm chi tiết bạn có thể truy cập Trang này .


5
Tôi thích câu này từ câu trả lời của bạn: Đây là Android, vì vậy mọi thứ không bao giờ dễ dàng Điều này đúng với những gì mà sự phát triển ứng dụng Android đang diễn ra, nhưng tôi nghĩ đó là một cái gì đó sai trong cách họ thiết kế API cũng như các mẫu để xây dựng Ứng dụng Android. Về mặt lý thuyết, một thiết kế tốt sẽ che giấu tất cả các phức tạp có thể có từ các lập trình viên (nhưng vẫn có thể truy cập được cho các nâng cao), điều họ thường quan tâm là logic nghiệp vụ, dữ liệu và các thuật toán khác ngoài việc xử lý các vấn đề liên quan đến UI (và các vấn đề tẻ nhạt hơn hiện tại trong phát triển Android).
Vô vọng

18

Sau đây là một vài điểm / điểm khác biệt chính giữa RecyclerView & ListView. Thực hiện cuộc gọi của bạn một cách khôn ngoan.

Nếu ListView phù hợp với bạn, không có lý do gì để di chuyển. Nếu bạn đang viết một giao diện người dùng mới, bạn có thể tốt hơn với RecyclerView.

RecylerView đã tích hợp sẵn ViewHolder, không cần triển khai giống như trong listView. Nó cũng hỗ trợ thông báo tại chỉ mục cụ thể

Những việc như tạo hiệu ứng cho việc thêm hoặc xóa các mục đã được triển khai trong RecyclerView mà bạn không phải làm gì cả

Chúng ta có thể liên kết trình quản lý bố cục với RecyclerView, điều này có thể được sử dụng để có được các chế độ xem ngẫu nhiên trong tái chế trong khi điều này là hạn chế trong ListView Trong ListView, loại chế độ xem duy nhất có sẵn là ListView dọc. Không có cách chính thức nào để thực hiện ListView theo chiều ngang. Bây giờ bằng cách sử dụng RecyclerView, chúng ta có thể có một

i) linearLayoutManager - hỗ trợ cả danh sách dọc và ngang, ii) StaggeredLayoutManager - hỗ trợ Pinterest như danh sách so le, iii) GridLayoutManager - hỗ trợ hiển thị lưới như trong ứng dụng Thư viện.

Và điều tốt nhất là chúng ta có thể làm tất cả những điều này một cách linh hoạt như chúng ta muốn.


14

Ưu điểm chính:

ViewHolderkhông có sẵn theo mặc định trong ListView. Chúng tôi sẽ tạo ra rõ ràng bên trong getView(). RecyclerViewđã sẵn sàng Viewholder.


4

Ngoài những khác biệt ở trên, sau đây là một vài điều nữa:

  1. RV tách biệt chế độ xem và ràng buộc dữ liệu để xem. Trong LV, bạn cần kiểm tra xem convertView có null hay không để tạo view, trước khi liên kết dữ liệu với nó. Vì vậy, trong trường hợp RV, chế độ xem sẽ chỉ được tạo khi cần thiết nhưng trong trường hợp LV, người ta có thể bỏ lỡ kiểm tra convertview và sẽ tạo chế độ xem mọi lúc.

  2. Việc chuyển đổi giữa Grid và List giờ đây trở nên dễ dàng hơn với LayoutManager.

  3. Không cần thông báo và cập nhật tất cả các mục, ngay cả khi chỉ một mục duy nhất được thay đổi.

  4. Người ta phải thực hiện xem bộ nhớ đệm trong trường hợp LV. Nó được cung cấp trong RV theo mặc định. (Có sự khác biệt giữa chế độ xem bộ nhớ đệm n.)

  5. Mục hoạt hình rất dễ dàng trong trường hợp RV.


4

Ưu điểm của RecyclerView so với listview:

  1. Chứa ViewHolder theo mặc định.

  2. Hoạt hình dễ dàng.

  3. Hỗ trợ bố trí ngang, lưới và so le

Ưu điểm của listView so với recyclerView:

  1. Dễ dàng để thêm dải phân cách.

  2. Có thể sử dụng mảngAdAd inbuilt cho danh sách đơn giản

  3. Hỗ trợ Header và footer.

  4. Hỗ trợ OnItemClickListner.


4
Theo tôi hiểu, bạn có thể dễ dàng thêm một dải phân cách vào recyclerView bằng cách sử dụng recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));sau khi thực hiện một cái gì đó nhưrecyclerView = view.findViewById(R.id.feed);
nviens

1
@nviens Để xem danh sách, bạn có thể thêm dải phân cách, điều chỉnh chiều cao của nó và tự thay đổi màu của nó trong xml. Ngoài ra việc triển khai hiện tại cho bộ chia là ổn, thật là một cơn ác mộng khi thêm bộ chia cho recyclerview trước đây, chỉ cần kiểm tra câu trả lời này để xem cách triển khai trước đó cho bộ chia là stackoverflow.com/a/27037230/6478047
Manohar Reddy

4

8 Sự khác biệt giữa RecyclerView và ListView

Tái chế vs ListView

1. Mẫu ViewHolder

Mẫu được sử dụng để giảm các lệnh gọi đến các phương thức findViewById () .

Trong ListView, bạn có thể dễ dàng tạo danh sách mà không cần sử dụng ViewHolder. Nhưng không phải trong trường hợp của RecyclerView.

2. Bộ chuyển đổi

Cả hai đều là Adaptor, vâng. Nó hoạt động dựa trên lớp bộ điều hợp.

Thật dễ dàng để xây dựng ListView bằng cách sử dụng các bộ điều hợp mặc định như ArrayAd CHƯƠNG, CthonAd CHƯƠNG nhưng RecyclerView cung cấp lớp RecyclerView.Ad CHƯƠNG, để tạo một lớp bộ điều hợp tùy chỉnh mới.

Bạn không thể sử dụng ArrayAd CHƯƠNG hoặc bất kỳ bộ điều hợp tích hợp nào khác với RecyclerView.

3. Sắp xếp vật phẩm

Tôi đã tạo dọc ListView trong mã đơn giản và ít hơn. Nhưng nếu chúng ta cần tạo GridView thì sao?

RecyclerView sử dụng LayoutManager để sắp xếp các mục của nó. Có 3 lớp LayoutManager.

  • Tuyến tínhLayoutManager - giúp tạo danh sách loại tuyến tính.
  • GridLayoutManager - Được sử dụng để tạo Grid.
  • StaggeredGridLayoutManager - Được sử dụng để tạo staggeredgrid.

Ảnh động

ListView thiếu hình ảnh động cơ bản. Nhưng RecyclerView đi kèm với hình ảnh động đơn giản.

Dải phân cách

Các android: chiaandroid: dividerHeight thuộc tính hoặc setDivider (), setDividerHeight () giúp bạn thực hiện tùy chỉnh chia trong ListView.

kể từ ngày 25.1.0, bạn có thể sử dụng lớp DividerItemDecoration để tạo một bộ chia đơn giản.

Nhấp vào Sự kiện

RecyclerView thiếu OnItemClickListener , vâng, điều đó rất buồn. Nhưng họ cung cấp thêm quyền kiểm soát cho nhà phát triển bằng cách cung cấp RecyclerView.OnItemTouchListener.

Phương thức thông báo

Bạn cần gọi các phương thức thông báo thích hợp * để thực hiện các hoạt ảnh chính xác. RecylcerView có rất nhiều phương thức thông báo * khi so sánh với ListView.


3

Tôi nghĩ rằng sự khác biệt chính và lớn nhất mà họ có là ListViewtìm kiếm vị trí của vật phẩm trong khi tạo hoặc đặt nó, mặt khác lại RecyclerViewtìm loại vật phẩm. nếu có một mục khác được tạo cùng loại RecyclerViewthì không tạo lại. Nó hỏi bộ điều hợp đầu tiên và sau đó yêu cầu tái chế, nếu bể tái chế nói "vâng tôi đã tạo ra một loại tương tự như nó", thì RecyclerViewkhông thử tạo ra loại tương tự. ListViewkhông có loại cơ chế gộp này.


2

Theo tôi, RecyclerViewđã được thực hiện để giải quyết vấn đề với mẫu tái chế được sử dụng trong danh sách xem vì nó làm cho cuộc sống của nhà phát triển trở nên khó khăn hơn. Tất cả những thứ khác bạn có thể xử lý nhiều hơn hoặc ít hơn. Ví dụ tôi sử dụng các bộ chuyển đổi tương tự cho ListViewGridViewnó không quan trọng trong cả hai quan điểm getView, getItemCount, getTypeCountđược sử dụng vì vậy nó giống nhau. RecyclerViewkhông cần thiết nếu ListViewListAdapterhoặc GridViewvới bộ điều hợp lưới đã hoạt động cho bạn. Nếu bạn đã triển khai chính xác ViewHoldermô hình trong danh sách của bạn thì bạn sẽ không thấy sự cải thiện lớn nào RecycleView.


2

Tôi đã làm việc một chút với RecyclerViewvà vẫn thích ListView.

  1. Chắc chắn, cả hai đều sử dụng ViewHolders, vì vậy đây không phải là một lợi thế.

  2. A RecyclerViewlà khó khăn hơn trong mã hóa.

  3. A RecyclerViewkhông chứa tiêu đề và chân trang, vì vậy đó là một điểm trừ.

  4. A ListViewkhông yêu cầu tạo ViewHolder. Trong trường hợp bạn muốn có một danh sách với các phần hoặc tiêu đề phụ, bạn nên tạo các mục độc lập (không có ViewHolder), sẽ dễ dàng hơn và không yêu cầu các lớp riêng biệt.


1
bạn có thể tạo phần tiêu đề và nội dung trong bộ chuyển đổi recyclerview và nó sẽ linh hoạt hơn listview. chỉ khó để thay đổi listview của bạn thành recyclerview nhưng nếu bạn có thể làm điều này, bạn sẽ hiểu ý của tôi. Listview không tán thành chỉ cần thử tìm hiểu recyclerview goodluck
erginduran

2
@erginduran, tôi đã sử dụng cả hai. ListView vẫn được sử dụng rộng rãi và không bị phản đối. Ngoài ra, nó lãng phí ít bộ nhớ hơn RecyclerView. Nếu bạn chỉ muốn thay thế ListView bằng RecyclerView, đó sẽ không phải là một ý tưởng hay.
CoolMind

Chỉ cần kiểm tra tại sao những kẻ này phát triển recyclerview cho? cải tiến của listview, phải không? Có rất nhiều lib và ứng dụng cũ trong google play, vì vậy, listview của bạn vẫn được sử dụng rộng rãi. Hãy bỏ đi những thứ cũ trong quá khứ. kiểm tra so sánh -> liên kết
erginduran

@erginduran, cảm ơn. Bạn nói đúng, RecyclerView có một số lợi thế. Câu trả lời của tôi là về các tác vụ thông thường trong đó ListView đôi khi dễ dàng hơn RecyclerView. Tất nhiên, hoạt hình và một số cải tiến khác là khó khăn hoặc không thể có trong ListView.
CoolMind

Tôi đã thêm một số khía cạnh trong chủ đề đó, xem stackoverflow.com/a/39721769/2914140 .
CoolMind

1
  1. Bạn có thể sử dụng một giao diện để cung cấp một trình nghe nhấp chuột. Tôi cũng sử dụng kỹ thuật này với ListViews.
  2. Không có bộ chia: Đơn giản chỉ cần thêm vào hàng của bạn một Chế độ xem với chiều rộng match_parent và chiều cao 1dp và tạo cho nó một màu nền.
  3. Chỉ cần sử dụng bộ chọn StateList cho nền hàng.
  4. addHeaderView cũng có thể tránh được trong ListViews: chỉ cần đặt Tiêu đề bên ngoài Chế độ xem.

Vì vậy, nếu tính hiệu quả là mối quan tâm của bạn, thì đúng vậy, đó là một ý tưởng tốt để thay thế ListView bằng RecyclerView.


0

Câu trả lời đơn giản: Bạn nên sử dụng RecyclerView trong tình huống bạn muốn hiển thị nhiều mục và số lượng mục đó là động. ListView chỉ nên được sử dụng khi số lượng vật phẩm luôn giống nhau và bị giới hạn ở kích thước màn hình.

Bạn thấy khó khăn hơn vì bạn đang nghĩ chỉ với thư viện Android.

Ngày nay tồn tại rất nhiều tùy chọn giúp bạn xây dựng bộ điều hợp của riêng bạn, giúp dễ dàng xây dựng danh sách và lưới các mục động mà bạn có thể chọn, sắp xếp lại, sử dụng hoạt hình, chia, thêm chân trang, tiêu đề, v.v.

Đừng sợ hãi và hãy thử RecyclerView, bạn có thể bắt đầu yêu thích việc tạo một danh sách 100 mục được tải xuống từ web (như tin tức trên facebook) trong ListView và RecyclerView, bạn sẽ thấy sự khác biệt trong UX (người dùng kinh nghiệm) khi bạn cố gắng cuộn, có thể ứng dụng thử nghiệm sẽ dừng trước khi bạn có thể làm điều đó.

Tôi khuyên bạn nên kiểm tra hai thư viện này để tạo bộ điều hợp dễ dàng:

FastAd CHƯƠNG bởi mikepenz

Chương trình linh hoạt của davideas


1
Tôi nghĩ rằng những tuyên bố của bạn về sự khác biệt hiệu suất giữa hai người là quá đáng. Tôi đã sử dụng ListView trong một ứng dụng sản xuất từ ​​năm 2012, hiển thị tới 3000 mục với ~ 10 Chế độ xem khác nhau trong mỗi hàng, hoàn toàn không có vấn đề gì về hiệu năng ngay cả trên các thiết bị Android 2.3 cũ.
Magnus W

0

Thông tin tái chế

Đã RecyclerViewđược giới thiệu với Android 5.0 (Lollipop). nó được bao gồm trong Thư viện hỗ trợ . Do đó, nó tương thích với API Android cấp 7.

Tương tự như ListView, RecyclerView’sý tưởng chính là cung cấp chức năng liệt kê theo cách thân thiện với hiệu suất. Một phần của 'Recycler' trong tên của khung nhìn này không có ở đó. Cái RecyclerViewthực sự có thể tái chế các vật phẩm mà nó hiện đang hoạt động. Quá trình tái chế được thực hiện nhờ một mẫu có tên là View Chủ .

Ưu và nhược điểm của RecyclerView

Ưu điểm:

  • hình ảnh động tích hợp để thêm, cập nhật và xóa các mục
  • thực thi tái chế các khung nhìn bằng cách sử dụng mẫu ViewHolder
  • hỗ trợ cả lưới và danh sách
  • hỗ trợ cuộn dọc và ngang
  • có thể được sử dụng cùng với DiffUtil

Nhược điểm:

  • thêm phức tạp
  • không có OnItemClickListener

Thông tin ListView

Điều ListViewnày đã xuất hiện từ khi Android bắt đầu. Nó có sẵn ngay cả trong API Level 1và nó có cùng mục đích RecyclerView.

Việc sử dụng ListView thực sự rất đơn giản. Ở khía cạnh này, nó không giống như người kế nhiệm của nó. Đường cong học tập mượt mà hơn so với RecyclerView. Như vậy, nó dễ nắm bắt hơn. Chúng ta không phải đối phó với những thứ như Trình quản lý bố cục, ItemAnimator hoặc DiffUtil.

Ưu và nhược điểm của ListView

Ưu điểm:

  • sử dụng đơn giản
  • bộ điều hợp mặc định
  • có sẵn OnItemClickListener
  • nó là nền tảng của ExpandableListView

Nhược điểm:

  • không chấp nhận việc sử dụng mẫu ViewHolder

0

Có nhiều sự khác biệt giữa ListView và RecyclerView, nhưng bạn cần lưu ý cụ thể những điều sau:

  • Mẫu ViewHolder hoàn toàn là tùy chọn trong ListView, nhưng nó được đưa vào RecyclerView.
  • ListView chỉ hỗ trợ cuộn dọc, nhưng RecyclerView không giới hạn ở danh sách cuộn dọc.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.