[英]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.