Czy ktoś może wyjaśnić lub zasugerować samouczek, aby utworzyć ListView w Androidzie?
Oto moje wymagania:
- Powinienem być w stanie dynamicznie dodawać nowe elementy, naciskając przycisk.
- Powinien być wystarczająco prosty do zrozumienia (na przykład bez poprawy wydajności lub konwersji)
Wiem, że jest wiele pytań na ten temat, zamieszczonych tutaj na StackOverflow, ale nie mogłem znaleźć odpowiedzi na moje pytanie. Dzięki!
Odpowiedzi:
Najpierw utwórz układ XML w folderze projektu
res/layout/main.xml
:Jest to prosty układ z przyciskiem u góry i widokiem listy na dole. Zauważ, że
ListView
ma identyfikator,@android:id/list
który definiuje domyślny,ListView
któregoListActivity
można użyć.android.R.layout.simple_list_item_1
jest domyślnym układem elementów listy dostarczanym przez system Android. Tego układu podstawowego można użyć do niezłożonych rzeczy.listItems
jest listą zawierającą dane pokazane w ListView. Wszelkie wstawianie i usuwanie powinno odbywać się w dniulistItems
; zmianylistItems
powinny zostać odzwierciedlone w widoku. Jest to obsługiwane przezArrayAdapter<String> adapter
, o czym należy powiadomić za pomocą:adapter.notifyDataSetChanged();
Adapter jest tworzony z 3 parametrami: kontekstem, którym może być twój
activity/listactivity
; układ indywidualnej pozycji na liście; i na koniec lista, która jest rzeczywistymi danymi do wyświetlenia na liście.źródło
ListActivity is an activity that includes a ListView as its only layout element by default. [...] (it) hosts a ListView object
. Tak więc domyślnie metody (jak setAdapter itp.) Znajdują się „wewnątrz” klasy.zamiast
możesz bezpośrednio zadzwonić
źródło
Najpierw musisz dodać ListView, EditText i przycisk do pliku activity_main.xml.
Teraz w swoim ActivityMain:
To działa dla mnie, mam nadzieję, że ci pomogłem
źródło
Jeśli chcesz mieć ListView w AppCompatActivity zamiast ListActivity, możesz wykonać następujące czynności (Modyfikowanie odpowiedzi @ Shardul):
A w twoim układzie zamiast używać
android:id="@android:id/list"
możesz użyćandroid:id="@+id/listDemo"
Teraz możesz mieć
ListView
wnętrze normalneAppCompatActivity
.źródło
Kod pliku MainActivity.java.
Kod pliku układu Activity_main.xml.
Zrzut ekranu
źródło
Krótka odpowiedź: kiedy tworzysz ListView, przekazujesz mu odniesienie do danych. Teraz, ilekroć dane te zostaną zmienione, wpłynie to na widok listy, a tym samym doda do niej element, po wywołaniu adapter.notifyDataSetChanged () ;.
Jeśli używasz RecyclerView, zaktualizuj tylko ostatni element (jeśli dodałeś go na końcu listy obiektów), aby zaoszczędzić pamięć za pomocą: mAdapter.notifyItemInserted (mItems.size () - 1);
źródło
Jest to prosta odpowiedź, jak dynamicznie dodawać dane w widoku listy Android kotlin
Właśnie wyjaśniłem dwa sposoby, możemy to zrobić na wiele sposobów.
źródło