繁体   English   中英

Android Graphview更改X轴数据

[英]Android Graphview changing x axis data

在我的应用程序中,我正在使用GraphView库创建LineGraphView。 它显示了从指定日期开始的数据,例如从18.01到30.01。 例如,当我将边界从25.01更改为29.01时,GraphView会更新图表(切掉不需要的线),但仍显示错误的x轴数据(18.01到30.01),但是当用户开始与图表进行交互(缩放,滚动)时,它会更新x轴,一切都很好。 是否有一种方法可以强制GraphView更新其x轴? 如果用户没有更改graphview的更新正确,那么在更改日期之前用户一直在与图表进行交互(缩放,滚动),则只会遇到此问题。 我以这种方式创建图表:

内部onCreate:

mGraphView = new LineGraphView(this, "Temperature Measurements");

还有一个当我从数据库中获取数据时创建图表的函数:

public void createChart(Cursor cursor) {
        GraphViewData[] values = new GraphViewData[cursor.getCount()];
        while (cursor.moveToNext()) {
            String time = cursor.getString(cursor
                    .getColumnIndex(MeasurementEntry.DATE_IN_MINUTES));
            String temp = cursor.getString(cursor
                    .getColumnIndex(MeasurementEntry.TEMPERATURE));
            values[cursor.getPosition()] = new GraphViewData(
                    Double.parseDouble(time), Double.parseDouble(temp));
        }

        mGraphView.removeAllSeries();
        mGraphView.addSeries(new GraphViewSeries(values));
        mGraphView.setScalable(true);
        mGraphView.getGraphViewStyle().setTextSize(15);

        final SimpleDateFormat formatter = new SimpleDateFormat(
                "dd.MM.yyyy HH:mm");
        mGraphView.setCustomLabelFormatter(new CustomLabelFormatter() {

            @Override
            public String formatLabel(double value, boolean isValueX) {
                if (isValueX) {
                    return formatter.format(new Date((long) value));
                }
                return null;
            }
        });
    }

这是出现问题的屏幕截图:

在此处输入图片说明

好的,所以我做到了,但是我认为可以做得更好,我要做的是从父布局中删除graphView,创建新的graphview并添加新的graphview-每当用户更改边界时,我都会按此顺序进行。 也许会对别人有帮助(createChart方法的简短片段,容器是我的父布局):

container.removeView(mGraphView);
mGraphView = new LineGraphView(this, "Temperature Measurements");
container.addView(mGraphView);
mGraphView.removeAllSeries();
mGraphView.addSeries(new GraphViewSeries(values));
mGraphView.setScalable(true);
mGraphView.getGraphViewStyle().setTextSize(15);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM