GridView VS GridLayout w aplikacjach na Androida

212

Do implementacji przeglądarki zdjęć w systemie Android muszę użyć siatki. Chciałbym poznać różnicę między GridView a GridLayout .

Abym wybrał właściwy.

Obecnie używam GridView do dynamicznego wyświetlania obrazów.

Lakshmi Sreekanth Chitla
źródło

Odpowiedzi:

264

GridView jest ViewGroup który wyświetla elementy w dwuwymiarowej siatki przewijania. Elementy w siatce pochodzą z ListAdapter powiązanego z tym widokiem.

To jest to, czego chcesz użyć (nadal używać). Ponieważ GridView pobiera dane z ListAdapter, jedynymi danymi załadowanymi do pamięci będą dane wyświetlane na ekranie. GridViews, podobnie jak ListViews, ponownie wykorzystuje i przetwarza swoje widoki dla lepszej wydajności.

Natomiast GridLayout to układ, który umieszcza swoje dzieci w prostokątnej siatce.

Został wprowadzony na poziomie API 14, a ostatnio został ponownie zaimportowany do Biblioteki wsparcia. Jego głównym celem jest rozwiązywanie problemów z wyrównaniem i wydajnością w innych układach. Sprawdź ten samouczek, jeśli chcesz dowiedzieć się więcej o GridLayout.

Benito Bertoli
źródło
15
GridLayout to także grupa ViewGroup.
Dzmitry Lazerka
22
Nigdy nie powiedziałem, że tak nie jest. Właśnie podkreślałem fakt, że jest to układ.
Benito Bertoli,
16
Scenariusz @laki one byłby taki, gdybyś chciał załadować wiązkę zdjęć do formacji podobnej do siatki. Użycie GridView spowoduje załadowanie tylko do pamięci widoków widocznych na ekranie. Natomiast jeśli używasz GridLayout, będziesz musiał załadować wszystkie obrazy, które będą wyświetlane w dowolnym momencie, powodując błąd braku pamięci w większości urządzeń.
BigBen3216,
15
Podstawowa różnica wydaje się polegać na tym, że GridView może pomieścić tylko jednolitą szerokość kolumny. Układ siatki pozwala na zawartość obejmującą 2 lub więcej kolumn. Układ siatki pozwala projektować ekrany o treści obejmującej różne rozmiary kolumn
Yasir
58
@laki Scenariusz pierwszy: Narysuj kalkulator, GridLayout. Scenariusz drugi: Narysuj galerię, GridView.
Mario Velasco