gpt4 book ai didi

android - 自定义 View 缺少适配器工具使用的构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:43 25 4
gpt4 key购买 nike

我收到以下警告:

Custom view com/example/view/adapter/SomeAdapter is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)

在我的类 SomeAdapter 中,它扩展了一些 BaseAdapter,它扩展了 ArrayAdapter

public class SomeAdapter extends BaseAdapter{}
public abstract class BaseAdapter extends ArrayAdapter<SomeModel>{}

警告存在于具体适配器中,但不存在于抽象 BaseAdapter 中。在这种情况下,有人听说过这个警告吗?

AFAIK Android 通过 ViewConstructorDetector 检查父类(super class)的名称来检查类是否正在扩展 View :

 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;
}

最佳答案

在您的 CustomView 类中添加构造函数:

public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}

关于android - 自定义 View 缺少适配器工具使用的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17063090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com