Jak mogę usunąć wszystkie widoki podrzędne z widżetu? Na przykład mam GridView i dynamicznie nadmuchuję do niego wiele innych LinearLayouts; później w mojej aplikacji chciałbym zacząć od nowa z GridView i wyczyścić wszystkie jego widoki podrzędne. Jak to zrobić? TIA.Usuwanie wszystkich widoków podrzędnych z widoku
74
A
Odpowiedz
143
viewGroup.removeAllViews()
działa dla każdej grupy view. w twoim przypadku jest to GridView.
http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews()
11
Można usunąć tylko niektóre rodzaje widoku w ViewGroup z tej funkcji:
private void clearImageView(ViewGroup v) {
boolean doBreak = false;
while (!doBreak) {
int childCount = v.getChildCount();
int i;
for(i=0; i<childCount; i++) {
View currentChild = v.getChildAt(i);
// Change ImageView with your desired type view
if (currentChild instanceof ImageView) {
v.removeView(currentChild);
break;
}
}
if (i == childCount) {
doBreak = true;
}
}
}
+0
Wcześniej przegłosowano, ponieważ PO nie pytał, jak usunąć różne typy widoków podrzędnych. OP chciał usunąć wszystkie widoki podrzędne. – protectedmember
0
void removeAllChildViews(ViewGroup viewGroup) {
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
if (child instanceof AdapterView) {
viewGroup.removeView(child);
return;
}
removeAllChildViews(((ViewGroup) child));
} else {
viewGroup.removeView(child);
}
}
}
0
Spróbuj
RelativeLayout relativeLayout = findViewById(R.id.realtive_layout_root);
relativeLayout.removeAllViews();
Ten kod działa dla mnie.
Powiązane problemy
- 1. Delegowanie zdarzeń do widoków podrzędnych w backbone.js
- 2. Usuwanie widoku z działania
- 3. Znajdowanie WSZYSTKICH formantów podrzędnych WPF
- 4. Określanie szerokości wszystkich elementów podrzędnych:
- 5. Jak sprawić, aby jeden z widoków podrzędnych nestedscrollview był lepki?
- 6. podproces: usuwanie procesów podrzędnych w systemie Windows
- 7. xcode Usuwanie niektórych subviews z widoku
- 8. Zaznaczanie wszystkich obiektów podrzędnych w Linq
- 9. Usuwanie tła widoku tekstowego
- 10. Wyłączanie wszystkich kontrolek podrzędnych z wyjątkiem jednego w oknie WPF
- 11. .Net Usuwanie wszystkich pierwszy 0 z ciągiem
- 12. Usuwanie wszystkich znaków białych znaków z wyjątkiem „”
- 13. Usuwanie wszystkich punktów wstrzymania z Chrome
- 14. Usuwanie wszystkich powiązanych rekordów z wielu tabel
- 15. Usuwanie kontrolera widoku z pamięci podczas tworzenia nowego kontrolera widoku
- 16. Lista wszystkich węzłów podrzędnych węzła nadrzędnego w formantu widoku drzewa w języku Visual C#
- 17. Nie można przesłonić domyślnego widoku widoków gemów
- 18. Zatrzymaj Androida przed układaniem wszystkich widoków
- 19. Usuwanie obramowania z NSBrowser
- 20. Usuwanie wszystkich zadań kolejkowania ThreadPoolExecutor
- 21. Usuwanie wszystkich dziesiętne w PHP
- 22. Umieść UIView na górze wszystkich innych widoków.
- 23. Wyliczanie/iterowanie wszystkich widoków w działaniu?
- 24. Niestandardowy odpowiednik odpowiednika dla wszystkich częściowych widoków
- 25. iPhone - Usuwanie przedstawionego kontrolera widoku
- 26. Xcode 8.1 - Jak zaktualizować ramki do wszystkich widoków w scenorysie?
- 27. W jaki sposób koordynacja widoków podrzędnych jest najlepiej obsługiwana w MVP?
- 28. Angular ui router wiele nazwanych widoków dla wszystkich stanów
- 29. Jakie wydarzenie zostało wywołane po pełnym wyświetleniu wszystkich widoków?
- 30. Usuwanie przycisku div na przycisku - problem: usuwanie wszystkich elementów div
Dzięki za pomoc! –
Właściwie removeAllViews() zgłasza wyjątek podczas wywoływania w GridView. Z poziomu Dokumentów: "Ta metoda nie jest obsługiwana i generuje wyjątek UnsupportedOperationException po wywołaniu." – Moritz
Ten komentarz dotyczy abstrakcyjnej klasy bazowej, z której wywodzi się ViewGroup. ViewGroup sam i wszystkie jego klasy pochodne obsługują removeAllViews. –