簡體   English   中英

如何使用 Java 在 Android Studio 中對我的 graphview 折線圖的 x 值進行排序?

[英]How do I sort my x values for my graphview line graph in Android Studio using Java?

我有一個存儲值的數據庫、一個 graphview 折線圖和一個數據系列。 當前日期是 X 值,用戶輸入他們當前的體重作為 Y 值。 一旦用戶點擊添加,數據應該被添加到圖表中,但是我的數組沒有排序。 我不斷收到錯誤消息。 不確定它是在錯誤的地方還是我遺漏了什么。

錯誤消息:值的順序不正確。 X 值必須按 ASC 順序排列。 首先是最低的 x 值,至少是最高的 x 值。

// 從布局中獲取圖形 graph = (GraphView) findViewById(R.id.graph);

    UserDB = new DBHelper(this);
    sqLiteDatabase = UserDB.getWritableDatabase();
    dataSeries = new LineGraphSeries<>(new DataPoint[0]);

    insertDataToGraph();
    graph.addSeries(dataSeries);
    graph.getGridLabelRenderer().setNumHorizontalLabels(3);

    Calendar calendar = Calendar.getInstance();
    String dateTXT = sdf.format(calendar.getTime());
    date.setText(dateTXT);
    public void insertDataToGraph(){
    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            long xValue = new Date().getTime();
            int currentWeightTXT = parseInt(currentWeight.getText().toString());
            UserDB.insertToData(xValue, currentWeightTXT);
            dataSeries.resetData(grabData());

            graph.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter(){
                @Override
                public String formatLabel (double value, boolean isValueX){
                    if(isValueX){
                        return sdf.format(new Date((long) value));
                    }
                    else {
                        return super.formatLabel(value, false);
                    }
                }
            });
        }
    });
}
private DataPoint[] grabData(){
    String [] column = {"xValue", "currentWeight"};
    @SuppressLint("Recycle") Cursor cursor = sqLiteDatabase.query("Graph", column, null, null, null, null, null);
    DataPoint[] dataPoints = new DataPoint[cursor.getCount()];
    for(int i = 0; i < cursor.getCount(); i++){
        cursor.moveToNext();
        dataPoints[i] = new DataPoint(cursor.getLong(0), cursor.getInt(1));
    }
    Arrays.sort(dataPoints);
    return dataPoints;
}

方法query應該有一個名為orderBy的參數。 您應該將其設置為"xValue" 這樣,數據庫將處理排序,您無需在 JAVA 代碼中執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM