This works but feels clunky - any suggestions for improvement?
public static <T extends View> T findViewByClassReference(View rootView, Class<T> classReference){
if(classReference.isInstance(rootView)){
return classReference.cast(rootView);
}
if(rootView instanceof ViewGroup){
ViewGroup viewGroup = (ViewGroup) rootView;
for(int i = 0; i < viewGroup.getChildCount(); i++){
View child = viewGroup.getChildAt(i);
View match = findViewByClassReference(child, classReference);
if(match != null){
return classReference.cast(match);
}
}
}
return null;
}