将数据传递给自定义 View 类

Raf*_*hez 5 android android-view

我想将一些数据传递给扩展 android.view.View 的自定义类。但是,我收到一条警告消息:

自定义视图 LinePlot 缺少工具使用的构造函数:(Context) 或 (Context,AttributeSet) 或 (Context,AttributeSet,int)

但是,我运行了代码,一切似乎都很顺利。

  • 怎么了?
  • 我应该如何将我的数据传递给我的班级?
  • 为什么我不能使用自定义构造函数?

谢谢!

import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

import java.util.ArrayList;

public class LinePlot extends View {

    private ArrayList<Float> mPoints;
    private int dx;
    private int dy;

    Paint paint=new Paint();

    public LinePlot(Context context,int dx_plot, int dy_plot, ArrayList<Float> points) {

        super(context);
        mPoints=points;
        dx=dx_plot;
        dy=dy_plot;
    }


@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    // plotting my data here
}  


}
Run Code Online (Sandbox Code Playgroud)

Ale*_*tin 0

该警告意味着您将无法在任何 xml 布局中使用自定义视图。

如果您不打算这样做,那么为您的自定义视图实现这些构造函数仍然是很好的选择,如下所示:

CustomView(Context ctx) {
   super(ctx)
}
Run Code Online (Sandbox Code Playgroud)

任何附加属性通常作为自定义属性而不是构造函数参数传递。阅读文档或其他地方的自定义视图属性http://www.tutorialspoint.com/android/create_custom_attributes_for_custom_component.htm