我有一个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
?
答案 0 :(得分:0)
看起来composer update
不仅在每次用户突出显示图表中的某个点时(正如我所假设的那样),而且在移动和与图表交互时。这为图表中的同一点创建了多个更新,因此,竞争条件 - refreshContent()
在执行后台任务后立即将值更新回初始值,并且从未看到值更改。
现在我正在跟踪正在更新的X值,如果它没有更改,我不会更新它:
refreshContent()
应该这样做。