Jaka jest rola adapterów w systemie Android?

123

Chcę wiedzieć, kiedy , gdzie i jak używane są adaptery w kontekście Androida.

Informacje z dokumentacji programisty Androida były dla mnie niewystarczające i chciałbym uzyskać bardziej szczegółową analizę.

Rudzik
źródło

Odpowiedzi:

29

Załóżmy, że chcesz wyświetlić listę w swojej aplikacji na Androida. W tym celu użyjesz ListViewdostarczonego przez Androida. ListVieww rzeczywistości same nie zawierają żadnych danych. To tylko element interfejsu użytkownika bez danych. Możesz wypełnić swoje ListViewpliki za pomocą adaptera Android.

Adapterto interfejs, którego implementacje dostarczają dane i sterują wyświetlaniem tych danych. ListViewwłasne adaptery, które całkowicie kontrolują ListViewwyświetlacz. Tak więc adaptery kontrolują zawartość wyświetlaną na liście, a także sposób jej wyświetlania.

AdapterInterfejs obejmuje różne sposoby komunikowania danych do systemu ListView. Możesz stworzyć swój własny adapter od podstaw, implementując BaseAdapter.

public class ArrayAdapter<T> extends BaseAdapter implements Filterable {

// One of the constructors
public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {
    init(context, resource, textViewResourceId, Arrays.asList(objects));
}

void manyMoreMethods(){} 

}

Zdefiniujmy adapter:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
   android.R.layout.simple_list_item_1, android.R.id.text1, values);
  • Pierwszy parametr: kontekst
  • Drugi parametr: układ wiersza
  • Trzeci parametr: identyfikator, TextViewdo którego zapisywane są dane
  • Czwarty parametr: tablica danych
Prashant_M
źródło
45

Adaptery w systemie Android są w zasadzie pomostem między komponentami UI a źródłem danych, które wypełniają dane do komponentu UI

Na przykład listy (składnik interfejsu użytkownika) są wypełniane za pomocą adaptera list z tablicy źródła danych.

sukces_anil
źródło
21
To te same informacje, które mogę uzyskać z dokumentacji. Ale chcę szczegółowe wyjaśnienie
Robin,
25

Chciałbym podzielić się moim zrozumieniem.

Jest to interfejs między źródłem danych a układem (najprawdopodobniej ListView).

Analogia

Weźmy na przykład ładowarkę mobilną, a raczej kabel USB. Przewód można traktować jako adapter, natomiast źródło danych i układ można rozumieć odpowiednio jako gniazdo (punkt wtyku) i port USB (punkt ładowania).

W przypadku ładowania mobilnego źródło zasilania może być inne, np. Ładowanie z powerbanku, gniazdka czy laptopa. To samo dotyczy adapterów używanych w systemie Android. Źródło danych może ulec zmianie w zależności od wymagań aplikacji.

Krótko mówiąc, adapter w systemie Android przenosi dane ze źródła (np. ArrayList<>) I dostarcza je do układu (plik .xml).

Akhilesh Sinha
źródło
2
Najlepszy jak dotąd przykład: D Dobra robota!
Daksh Gargas
8

Adaptery w systemie Android są pomostem między widokiem adaptera (np. ListView) A podstawowymi danymi tego widoku. Wyobraź sobie, jak wyglądałby świat bez adapterów!

Przykłady

  • Widok pokazujący elementy na liście przewijanej w pionie. Elementy pochodzą z ListAdapterpowiązanego z tym widokiem.

  • ListAdapterDefiniuje układ dla poszczególnych wierszy listy i dostarcza dane do ListViewpośrednictwem setAdapter()metody ListView.

  • Android udostępnia kilka standardowych adapterów; najważniejsze to ArrayAdapteri CursorAdapter.

  • ArrayAdapter może obsługiwać dane w oparciu o tablice lub listy.

  • SimpleCursorAdapter może obsługiwać dane związane z bazą danych.
Steve
źródło
4

Adaptery są zasadniczo używane do dostarczania treści. Jednym z adapterów, które prawdopodobnie masz w każdej aplikacji, jest CursorAdapter, który umożliwia dostarczanie treści podawanej przez kursor z zapytania do bazy danych. ListView prawie zawsze ma jakiś rodzaj adaptera.

WarrenFaith
źródło
7
To te same informacje, które mogę uzyskać z dokumentacji. Ale chcę szczegółowe wyjaśnienie
Robin,
@Robin: dlaczego nie uczcisz 10-lecia swojego pytania, „przyjmując” jedną z odpowiedzi. Osobiście: 1) Twoje pytanie było dla mnie wartościowe (tak się tutaj znalazłem), 2) Wiele z tych odpowiedzi okazało się pomocnych (w tym ta) ... i 3) Nie mam pojęcia, co masz na myśli, mówiąc „ bardziej szczegółowe wyjaśnienie ”. Być może dlatego, że bardziej interesuje mnie „dlaczego” (jak dobrze wyjaśniono powyżej); Bardziej interesuje mnie „las” (jak odpowiedź WarrenFaitha) niż „szczegółowe drzewa” (które MOGĘ uzyskać z dokumentacji). Zagłosuj za i zaakceptuj :)
FoggyDay
4

Adapter działa jako pomost między AdapterViewdanymi a bazowymi danymi tego widoku. Adapter zapewnia dostęp do elementów danych i jest odpowiedzialny za tworzenie widoku dla każdego elementu w zestawie danych.

Adaptery to sprytny sposób na połączenie Viewz jakimś źródłem danych. Zwykle Twój widok byłby a, ListViewa dane miałyby postać Cursorlub Array. Więc adaptery są podklasy CursorAdapterlub ArrayAdapter.

Jainendra
źródło
2

Adapter zarządza modelem danych i dostosowuje go do poszczególnych wierszy w widoku listy. To rozszerza BaseAdapterklasę.

Każdy wiersz w widoku listy składa się z układu, który może być tak złożony, jak chcesz. Typowa linia w widoku listy ma obraz po lewej stronie i dwie linie tekstu pośrodku.

kamal patidar
źródło
0

Adapter służy po prostu do osiągnięcia koncepcji widoku listy. Nie tylko do wyświetlania listy danych, ale także do niestandardowego widoku. Załóżmy, że klient chce skorzystać z listy, która ma większą liczbę widoków tekstowych (jakikolwiek inny widok), wtedy musimy skorzystać z widoku Adaptera w systemie Android.

Hemalatha MR
źródło
0

Podano już wiele odpowiedzi, ale chcę udzielić innej odpowiedzi.

Adapter oznacza, że ​​możesz to zrobić Jego dostawca mostu .

Adaptery to łącze między zestawem danych a elementem AdapterView wyświetlającym dane.

Ramesh
źródło
0

Na koniec adaptery są bardzo przydatne do sporządzenia raportu. Chcąc pokazać jakieś informacje w raporcie, można skorzystać z tego narzędzia, aby pokazać dane na widoku.

RobertoFRey
źródło