MPAndroidChart不从后台任务更新MarkerView

时间:2016-10-25 20:56:46

标签: java android android-asynctask mpandroidchart

我有一个MarkerView类,看起来像这样:

public class InfoMarkerView extends MarkerView {

    TextView tv;
    LineChart mChart;

    public InfoMarkerView(Context context, int layoutResource, LineChart chart) {
        super(context, layoutResource);
        mChart = chart;
    }

    @Override
    public void refreshContent(Entry e, Highlight highlight) {

        tv = (TextView) findViewById(R.id.textView6);

        tv.setText("Marker set in refreshContent");

        MyBackgroundTask myTask = new MyBackgroundTask(this);    //extends AsyncTask
        myTask.execute();

    }

    //callback from MyBackgroundTask
    public void myBackgroundTaskFinished(BackgroundTaskResult r) {
        tv.setText("Marker changed in myBackgroundTaskFinished");
        mChart.invalidate();   //doesn't really seem to change anything
    }

调用回调后,TextView已成功更新(我可以在Watch窗口中看到),但在图表界面中看不到更改。我在这里错过了什么?我该怎么做才能刷新TextView

1 个答案:

答案 0 :(得分:0)

看起来composer update不仅在每次用户突出显示图表中的某个点时(正如我所假设的那样),而且在移动和与图表交互时。这为图表中的同一点创建了多个更新,因此,竞争条件 - refreshContent()在执行后台任务后立即将值更新回初始值,并且从未看到值更改。

现在我正在跟踪正在更新的X值,如果它没有更改,我不会更新它:

refreshContent()

应该这样做。