Я пытаюсь создать график в виде графика, который отображает на осях X и Y - целое число. Данные хранятся в базе данных sqlite. Вот мой DatabaseHelper.java
файл:
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME="records.db";
public static final String TABLE_NAME="records_table";
public static final String COL_1="date";
public static final String COL_2="percentage";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + "(date DATE,percentage INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void insertData(Integer percentage){
SQLiteDatabase db= this.getWritableDatabase();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
Date date = new Date();
ContentValues initialValues = new ContentValues();
initialValues.put("date", dateFormat.format(date));
initialValues.put("percentage",percentage);
long rowId = db.insert(TABLE_NAME, null, initialValues);
}
}
А вот файл, в котором отображается график, Statistics.java
:
public class Statistics extends AppCompatActivity {
SQLiteDatabase db;
GraphView graphView;
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[0]);
SimpleDateFormat sdf=new SimpleDateFormat("MM-dd");
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_statistics);
graphView= (GraphView) findViewById(R.id.graph);
graphView.addSeries(series);
graphView.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,isValueX);
}
}
});
series.resetData(getDataPoint());
exqInsert();
}
private void exqInsert() {
series.resetData(getDataPoint());
graphView.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,isValueX);
}
}
});
}
@SuppressLint("WrongConstant")
private DataPoint[] getDataPoint() {
String[] columns= {"date","percentage"};
db = openOrCreateDatabase("records.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
Cursor cursor=db.query("records_table",columns,null,null,null,null,null);
DataPoint[] dp=new DataPoint[cursor.getCount()];
for (int i=0 ; i<cursor.getCount(); i++){
cursor.moveToNext();
dp[i]= new DataPoint(cursor.getLong(0),cursor.getInt(1));
}
return dp;
}
}
Данные в моей базе данных records.db следующее:
Но график, который я получаю, таков:
Что я делаю не так? Как я могу это исправить?