Как я могу вызвать DataHelper из потока или класса рисования с OnDraw? - PullRequest
0 голосов
/ 04 июня 2011

Извините за краткое название. У меня есть приложение для Android, в котором я рисую в классе, который выполняется на CanvasThread, чтобы держаться подальше от основного потока GUI. Но теперь, когда я хочу рисовать прямоугольники на основе данных из запроса к классу DataHelper. Когда я хочу создать экземпляр DataHelper с помощью DataHelper dh = new DataHelper(this);, я получаю жалобу, что мне нужен другой конструктор в 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 Ответ

1 голос
/ 04 июня 2011

Я думаю, вам следует использовать контекстный параметр из конструктора PanelChart, это контекст 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);


}
...