【发布时间】:2013-06-12 10:22:37
【问题描述】:
我收到以下警告:
自定义视图 com/example/view/adapter/SomeAdapter 丢失 工具使用的构造函数: (Context) 或 (Context,AttributeSet) 或 (上下文,属性集,int)
在我的类 SomeAdapter 中,它扩展了一些 BaseAdapter,它扩展了 ArrayAdapter
public class SomeAdapter extends BaseAdapter{}
public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{}
警告存在于具体适配器中,但不存在于抽象 BaseAdapter 中。 在这种情况下,有人听说过这个警告吗?
AFAIK Android 通过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;
}
据我所知,我的类名与上面的模式不匹配。 有谁知道如何修复或禁止此警告?
BaseAdapter 中的getView():
@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;
}
【问题讨论】:
-
什么实现了你的适配器?你有自定义视图吗?
-
不,我没有实现任何东西。只是扩展 ArrayAdapter。
-
出于什么目的?适配器不能单独工作。你想用它做什么?
-
我在(标准)ListView 中使用了可能的适配器。
标签: android warnings adapter android-arrayadapter listadapter