Tôi làm cách nào để thực hiện việc này?Android có loại chế độ xem
điều gì đó:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
Tôi làm cách nào để thực hiện việc này?Android có loại chế độ xem
điều gì đó:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
Nếu vì một lý do kỳ lạ, bạn không thể sử dụng gợi ý Asahi 's (sử dụng thẻ), đề xuất của tôi sẽ như sau:
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 ...
Bạn có thể sử dụng thẻ cho mục đích đó: xem thiết lập/getTag phương pháp tại http://developer.android.com/reference/android/view/View.html
Tôi thử làm như sau và làm việc:
View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
Tôi đang sử dụng TextView để đặt kiểu cho một spinner (liên kết trong ví dụ này: http://developer.android.com/resources/tutorials/views/hello-spinner.html) .Tôi cũng đang sử dụng onItemSelected sự kiện tiếp tục kích hoạt với một cái nhìn mà tôi đã không nhận ra.Việc sử dụng phương pháp của bạn ở trên - v.getClass(). getName() - Tôi đã có thể xác định rằng View được chuyển vào sự kiện là TextView tôi đang sử dụng cho các kiểu. – jwatts1980
Đối Những người khác kiểm tra Câu hỏi này, trong một số trường hợp instanceof
không hoạt động (Tôi không biết tại sao!), Ví dụ nếu muốn của bạn để kiểm tra xem chế độ xem loại là ImageView
hoặc ImageButton
(i kiểm tra tình trạng này) , nó nhận được chúng giống nhau, vì vậy bạn quét theo cách này:
//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;
}
Nó không hoạt động cho ListView. Và, tôi phải tạo một CustomListView tùy chỉnh khác mở rộng ListView, để tôi có thể sử dụng (xem instanceof CustomListView). Có cách nào để biết loại khi nó là ListView? Cảm ơn. – mabeiyi
@mabeiyi nếu 'xem instanceof ListView' là' false', có nghĩa là chế độ xem của bạn không phải là 'ListView'. – Felix
@Felix - thực sự nếu bạn có một ListView và bạn đã đặt "singleChoice" thì nó sẽ trả về tên lớp là "android.widget.CheckedTextView". Điều này đã chỉ chút tôi. Điều này thực hiện điều này dưới sự bảo hiểm. :( – PAntoine