Первая загрузка данных корректна, но график второй раз не обновляет данные. Он снова и снова показывает данные предыдущего графика.
public class OpdIpdAnalysis extends AppCompatActivity implements NetworkReceiver.ConnectionChangeCallback {
AnyChartView anyChartView;
Set set1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_opd_ipd_analysis);
anyChartView = findViewById(R.id.anyChartLineChart);
anyChartView.setProgressBar(myProgressBar);
}
private void anyChartGraphViewData(Response<OpdIpdModel.ModelResponse> response) {
Cartesian cartesian = AnyChart.line();
cartesian.animation(true);
cartesian.padding(5d, 10d, 1d, 5d);
cartesian.crosshair().enabled(true);
cartesian.crosshair()
.yLabel(true)
// TODO ystroke
.yStroke((Stroke) null, null, null, (String) null, (String) null);
cartesian.tooltip().positionMode(TooltipPositionMode.POINT);
cartesian.title("MIS Report of comparing OPD and IPD data.");
//cartesian.yAxis(0).title("Number of Patient admitted in");
cartesian.xAxis(0).labels().padding(1d, 1d, 1d, 1d);
cartesian.xAxis(0).labels().fontSize(8);
/* Customization Done */
List<DataEntry> entries1 = new ArrayList<>();
//List<DataEntry> entries2 = new ArrayList<>();
final List<String> xLabel = new ArrayList<>();
if (response.body() != null) {
for (OpdIpdModel opdIpdModel : response.body().getOpdIpdComparison()) {
xLabel.add(opdIpdModel.getYear().shortValue() + "-" + opdIpdModel.getMonthString());
entries1.add(new CustomDataEntry(xLabel, opdIpdModel.getoPD(), opdIpdModel.getiPD()));
//entries2.add(new CustomDataEntry(xLabel, opdIpdModel.getoPD(), opdIpdModel.getiPD()));
}
}
set1 = Set.instantiate();
set1.data(entries1);
Mapping series1Mapping = set1.mapAs("{ x: 'x', value: 'value1' }");
//set2 = Set.instantiate();
//set2.data(entries2);
Mapping series2Mapping = set1.mapAs("{ x: 'x', value: 'value2' }");
Line series1 = cartesian.line(series1Mapping);
series1.name("OPD");
series1.hovered().markers().enabled(true);
series1.hovered().markers()
.type(MarkerType.CIRCLE)
.size(5d);
series1.tooltip()
.position("right")
.anchor(Anchor.LEFT_CENTER)
.offsetX(0d)
.offsetY(0d);
Line series2 = cartesian.line(series2Mapping);
series2.name("IPD");
series2.hovered().markers().enabled(true);
series2.hovered().markers()
.type(MarkerType.CIRCLE)
.size(5d);
series2.tooltip()
.position("right")
.anchor(Anchor.LEFT_CENTER)
.offsetX(0d)
.offsetY(0d);
cartesian.legend().enabled(true);
cartesian.legend().fontSize(10d);
cartesian.legend().padding(0d, 0d, 10d, 0d);
cartesian.interactivity().hoverMode(HoverMode.BY_X);
//cartesian.xZoom(3);
cartesian.xScroller(true);
//cartesian.notifyDataChanged();
anyChartView.setZoomEnabled(true);
anyChartView.setChart(cartesian);
anyChartView.refreshDrawableState();
anyChartView.invalidate();
//anyChartView.notify();
}
private class CustomDataEntry extends ValueDataEntry {
CustomDataEntry(List<String> x, Number value, Number value2) {
super(String.valueOf(x), value);
setValue("value1", value);
setValue("value2", value2);
}
}
private void allOpdIpdData(String department_id) {
call = service.getAllOpdIpdData("/Report/GetOpdIpdComparison?departmentId=" + department_id);
call.enqueue(new Callback<OpdIpdModel.ModelResponse>() {
@Override
public void onResponse(@NotNull Call<OpdIpdModel.ModelResponse> call, @NotNull Response<OpdIpdModel.ModelResponse> response) {
myProgressBar.setVisibility(View.GONE);
if (response.isSuccessful() && response.body() != null) {
updateUI(response.body().getOpdIpdComparison());
//graphData(response);
/*if (anyChartView != null && anyChartView.isEnabled()){
anyChartView.clear();
}*/
anyChartGraphViewData(response);
} else {
if (response.code() == 401) {
}
}
}
@Override
public void onFailure(@NotNull Call<OpdIpdModel.ModelResponse> call, @NotNull Throwable t) {
}
});
}
}
Я использую пробную версию, как перезагрузить линейную диаграмму с новыми данными?
Любая идея, почему это происходит и как Чтобы решить эту проблему?
Пожалуйста, помогите мне решить эту проблему.
Спасибо.