tôi đã cảnh báo sau đây:Tuỳ chỉnh xem là mất tích xây dựng được sử dụng bởi các công cụ để chuyển đổi
xem Tuỳ chỉnh com/example/xem/adapter/SomeAdapter thiếu constructor được sử dụng bởi các công cụ: (Bối cảnh) hoặc (Context , AttributeSet) hoặc (Context, AttributeSet, int)
trong SomeAdapter lớp học của tôi mà kéo dài một số BaseAdapter kéo dài ArrayAdapter
public class SomeAdapter extends BaseAdapter{}
public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{}
Cảnh báo tồn tại trong bộ điều hợp cụ thể nhưng không có trong BaseAdapter trừu tượng. Có ai từng nghe về cảnh báo này trong ngữ cảnh đó không?
AFAIK Android kiểm tra các lớp học vì họ đang mở rộng quan điểm bằng cách kiểm tra tên của các lớp siêu qua ViewConstructorDetector:
private static boolean isViewClass(ClassContext context, ClassNode node) {
String superName = node.superName;
while (superName != null) {
if (superName.equals("android/view/View") //$NON-NLS-1$
|| superName.equals("android/view/ViewGroup") //$NON-NLS-1$
|| superName.startsWith("android/widget/") //$NON-NLS-1$
&& !((superName.endsWith("Adapter") //$NON-NLS-1$
|| superName.endsWith("Controller") //$NON-NLS-1$
|| superName.endsWith("Service") //$NON-NLS-1$
|| superName.endsWith("Provider") //$NON-NLS-1$
|| superName.endsWith("Filter")))) { //$NON-NLS-1$
return true;
}
superName = context.getDriver().getSuperClass(superName);
}
return false;
}
Theo như tôi có thể nhìn thấy tên lớp học của tôi không phù hợp với mô hình trên. Có ai có ý tưởng làm thế nào để sửa chữa hoặc ngăn chặn cảnh báo này?
getView() trong BaseAdapter:
@Override
public final View getView(final int position, final View convertView, final ViewGroup parent) {
View view = convertView;
if (null == view) {
view = createNewView(parent, position);
} else {
reuseOldView(view, position);
}
return view;
}
Điều gì sẽ thực hiện bộ điều hợp của bạn? Bạn có chế độ xem tùy chỉnh không? – Neil
Không, tôi không thực hiện bất cứ điều gì. Chỉ cần mở rộng ArrayAdapter. – salcosand
cho mục đích gì? Bộ điều hợp không thể tự hoạt động. Bạn muốn sử dụng nó để làm gì? – Neil