当前位置: 首页 > 知识库问答 >
问题:

自定义视图缺少适配器工具使用的构造函数

年烈
2023-03-14

我得到了以下警告:

自定义视图COM/example/view/adapter/someAdapter缺少工具使用的构造函数:(Context)或(Context,AttributeSet)或(Context,AttributeSet,int)

在我的类中,某个Adapter扩展了某个BaseAdapter扩展了ArrayAdapter

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

该警告存在于具体适配器中,而不存在于抽象的基适配器中。有人听过这种警告吗?

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

共有1个答案

东方灵均
2023-03-14

在CustomView类中添加构造函数:

public CustomView(Context context) {
    super(context);
}
public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
}
 类似资料:
  • LeetCode上有一个问题,要求你将一个多级双链接列表扁平化。我深陷其中,于是开始四处搜索。我为它找到了一个Java解决方案,但它没有意义。 给定的类没有任何构造函数(自定义),但在解决方案中,它们将它创建一个对象,就像它有一个自定义构造函数一样! 如下所示: 这怎么可能?这就像类有某种隐藏的构造函数一样!

  • 编辑:需要知道如何创建由Textview填充的

  • 可以定义一个(a)没有用户定义的构造函数,以及(b)无法生成默认构造函数。例如,下面的: 您仍然可以使用聚合初始化创建Foo的实例: 我的普通编译器(VS2012)将勉强接受这一点,但它提出了两个警告: 警告C4510:'Foo':无法生成默认构造函数。 警告C4610:结构“Foo”永远不能实例化-需要用户定义的构造函数 当然,我刚刚证明了警告#2是错误的——您仍然可以使用聚合初始化来实例化它。

  • 我在android应用程序上使用自定义适配器查看列表。我不知道如何设置项目单击的侦听器。我的应用程序使用Kotlin。 这是我的适配器布局。 有人可以帮助我吗?

  • 我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器

  • 这是我得到的错误: 在模板中:“std::priority_queue ,std::vector >”的初始化没有匹配的构造函数,(lambda位于