Jak mogę to zrobić?Android dostaje typ widoku
coś:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
Jak mogę to zrobić?Android dostaje typ widoku
coś:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
Jeśli z jakiegoś dziwnego powodu, nie można używać sugestię Asahi „s (przy użyciu tagów), moja propozycja będzie następujący:
if (view instanceof ImageView) {
ImageView imageView = (ImageView) view;
// do what you want with imageView
}
else if (view instanceof TextView) {
TextView textView = (TextView) view;
// do what you want with textView
}
else if ...
Można użyć do tego celu tag: zobacz Ustawianie/getTag metody w http://developer.android.com/reference/android/view/View.html
i spróbuj wykonać następujące czynności i to działało:
View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
Używam TextView do ustawienia stylu dla spinnera (link w tym przykładzie: http://developer.android.com/resources/tutorials/views/hello-spinner.html). Używam również onItemSelected metoda zdarzenia dla spinnera Zdarzenie ciągle wyzwalało się z widoku, którego nie rozpoznałem, używając powyższej metody - v.getClass(). getName() - udało mi się ustalić, że widok jest przekazywany do zdarzenia jest TextView, którego używam dla stylów. – jwatts1980
dla innych, którzy sprawdzają to pytanie, w niektórych przypadkach instanceof
nie działa (nie wiem dlaczego!), Na przykład, jeśli chcesz sprawdzić, czy typ widoku jest ImageView
lub ImageButton
(i przetestowane tej sytuacji) , robi się to samo, więc skanujesz w ten sposób:
//v is your View
if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageView")) {
Log.e("imgview", v.toString());
imgview = (ImageView) v;
} else if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageButton")) {
Log.e("imgbtn", v.toString());
imgbtn = (ImageButton) v;
}
To nie działa dla ListView. I, muszę stworzyć inny niestandardowy CustomListView, który rozszerza ListView, dzięki czemu mogę go używać (zobacz instancję customListView). Czy istnieje jakiś sposób poznać typ, gdy jest ListView? Dzięki. – mabeiyi
@mabeiyi jeśli 'zobacz instanceof ListView' jest' false', to znaczy, że twój widok nie jest 'ListView'. – Felix
@Felix - właściwie jeśli masz ListView i ustawiłeś "singleChoice", to zwróci nazwę klasy "android.widget.CheckedTextView". To mnie właśnie ugryzło. Robi to pod osłonami. :( – PAntoine