如何使用OnDraw从线程或绘图类调用DataHelper?

时间:2011-06-04 07:54:32

标签: android database-connection ondraw

对于简明的标题感到抱歉。我有一个Android应用程序,我在一个在CanvasThread上运行的类中绘制,以远离主GUI线程。 但是现在我想根据查询中的数据绘制矩形到DataHelper类。 当我想用DataHelper dh = new DataHelper(this);实例化DataHelper时,我得到的抱怨是我需要DataHelper中的另一个构造函数,它将PanelChart作为参数而不是Context。为什么是这样?

这是我的PanelChart课程:

public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
private SurfaceView sf;
private DataHelper dh ;

public PanelChart(Context context, AttributeSet attrs) {
    super(context, attrs);


getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
sf = (SurfaceView) findViewById(R.id.SurfaceView01);
setFocusable(true);



  //getData(dh);

}

getData(dh);是我想要调用DataHelper的方法,并检索绘制所需的信息。

我应该在DataHelper中创建另一个构造函数吗?我应该在另一个类中进行查询并将其发送到我的PanelChart类吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您应该使用PanelChart构造函数中的context参数,这是Activity的上下文,您可以在其中创建PanelChart:

public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
private SurfaceView sf;
private DataHelper dh ;

public PanelChart(Context context, AttributeSet attrs) {
    super(context, attrs);

DataHelper dh = new DataHelper(context);
getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
sf = (SurfaceView) findViewById(R.id.SurfaceView01);
setFocusable(true);


}