在android中使用MPAndroidChart从数据库检索数据并在条形图中显示它们
我知道如何使用MPAndroidChart在条形图中显示原始数据,但在实际场景中遇到了问题。我的sqlite数据库中有一些数据,我想在条形图中显示它们。请给我一些参考或简单的例子 数据库表有两列“月份”和一些数字。例如:一月=200,二月=300,等等 我找了很多,但找不到合适的。他们要么是2-3岁,要么不是我提到的那种类型在android中使用MPAndroidChart从数据库检索数据并在条形图中显示它们,android,database,sqlite,mpandroidchart,Android,Database,Sqlite,Mpandroidchart,我知道如何使用MPAndroidChart在条形图中显示原始数据,但在实际场景中遇到了问题。我的sqlite数据库中有一些数据,我想在条形图中显示它们。请给我一些参考或简单的例子 数据库表有两列“月份”和一些数字。例如:一月=200,二月=300,等等 我找了很多,但找不到合适的。他们要么是2-3岁,要么不是我提到的那种类型 提前谢谢。这是我问题的答案。 这是两种在阵列中存储x轴数据和y轴数据的方法 public ArrayList<String> queryXData(){
提前谢谢。这是我问题的答案。 这是两种在阵列中存储x轴数据和y轴数据的方法
public ArrayList<String> queryXData(){
ArrayList<String> xNewData = new ArrayList<String>();
String query = "SELECT " + DAILY_DATE + " FROM " + TABLE_DAILY_FRAG;
Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
xNewData.add(cursor.getString(cursor.getColumnIndex(DAILY_DATE)));
}
cursor.close();
return xNewData;
}
public ArrayList<Float> queryYData(){
ArrayList<Float> yNewData = new ArrayList<Float>();
String query = "SELECT " + DAILY_TOTAL + " FROM " + TABLE_DAILY_FRAG;
Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
yNewData.add(cursor.getFloat(cursor.getColumnIndex(DAILY_TOTAL)));
}
cursor.close();
return yNewData;
}
public ArrayList queryXData(){
ArrayList xNewData=新的ArrayList();
String query=“从“+表格\每日\框架”中选择“+每日\日期+”;
Cursor Cursor=mSQLiteDatabase.rawQuery(query,null);
对于(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
xNewData.add(cursor.getString(cursor.getColumnIndex(DAILY_DATE));
}
cursor.close();
返回xNewData;
}
公共ArrayList QueryData(){
ArrayList yNewData=新的ArrayList();
String query=“从“+表格\每日\框架”中选择“+每日\总计+”;
Cursor Cursor=mSQLiteDatabase.rawQuery(query,null);
对于(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
添加(cursor.getFloat(cursor.getColumnIndex(DAILY_TOTAL));
}
cursor.close();
返回yNewData;
}
这是显示条形图的另一种方法。在活动中调用此方法
private void addData(){
ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();
for (int i = 0; i < mExpenseDB.queryYData().size(); i++)
yVals.add(new BarEntry(mExpenseDB.queryYData().get(i), i));
ArrayList<String> xVals = new ArrayList<String>();
for(int i = 0; i < mExpenseDB.queryXData().size(); i++)
xVals.add(mExpenseDB.queryXData().get(i));
BarDataSet dataSet = new BarDataSet(yVals, "expense values");
dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
BarData data = new BarData(xVals, dataSet);
LimitLine line = new LimitLine(12f, "average daily expense");
line.setTextSize(12f);
line.setLineWidth(4f);
YAxis leftAxis = barChart.getAxisLeft();
leftAxis.addLimitLine(line);
barChart.setData(data);
barChart.setDescription("The expenses chart.");
barChart.animateY(2000);
}
private void addData(){
ArrayList yVals=新的ArrayList();
对于(int i=0;i
如果您觉得这有帮助,请告诉我。以下是我问题的答案。 这是两种在阵列中存储x轴数据和y轴数据的方法
public ArrayList<String> queryXData(){
ArrayList<String> xNewData = new ArrayList<String>();
String query = "SELECT " + DAILY_DATE + " FROM " + TABLE_DAILY_FRAG;
Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
xNewData.add(cursor.getString(cursor.getColumnIndex(DAILY_DATE)));
}
cursor.close();
return xNewData;
}
public ArrayList<Float> queryYData(){
ArrayList<Float> yNewData = new ArrayList<Float>();
String query = "SELECT " + DAILY_TOTAL + " FROM " + TABLE_DAILY_FRAG;
Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
yNewData.add(cursor.getFloat(cursor.getColumnIndex(DAILY_TOTAL)));
}
cursor.close();
return yNewData;
}
public ArrayList queryXData(){
ArrayList xNewData=新的ArrayList();
String query=“从“+表格\每日\框架”中选择“+每日\日期+”;
Cursor Cursor=mSQLiteDatabase.rawQuery(query,null);
对于(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
xNewData.add(cursor.getString(cursor.getColumnIndex(DAILY_DATE));
}
cursor.close();
返回xNewData;
}
公共ArrayList QueryData(){
ArrayList yNewData=新的ArrayList();
String query=“从“+表格\每日\框架”中选择“+每日\总计+”;
Cursor Cursor=mSQLiteDatabase.rawQuery(query,null);
对于(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
添加(cursor.getFloat(cursor.getColumnIndex(DAILY_TOTAL));
}
cursor.close();
返回yNewData;
}
这是显示条形图的另一种方法。在活动中调用此方法
private void addData(){
ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();
for (int i = 0; i < mExpenseDB.queryYData().size(); i++)
yVals.add(new BarEntry(mExpenseDB.queryYData().get(i), i));
ArrayList<String> xVals = new ArrayList<String>();
for(int i = 0; i < mExpenseDB.queryXData().size(); i++)
xVals.add(mExpenseDB.queryXData().get(i));
BarDataSet dataSet = new BarDataSet(yVals, "expense values");
dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
BarData data = new BarData(xVals, dataSet);
LimitLine line = new LimitLine(12f, "average daily expense");
line.setTextSize(12f);
line.setLineWidth(4f);
YAxis leftAxis = barChart.getAxisLeft();
leftAxis.addLimitLine(line);
barChart.setData(data);
barChart.setDescription("The expenses chart.");
barChart.animateY(2000);
}
private void addData(){
ArrayList yVals=新的ArrayList();
对于(int i=0;i
如果您觉得这很有用,请告诉我。为什么您有两个从db获取的循环,而不是一个具有两列select的循环?在使用相同的
for
循环之前,您必须管理queryXData()
和queryYData()
。我会做:1)选择daily_date,daily_total from。。。2) 迭代结果。。3) 从两列中创建条目为什么有两个循环从db中获取,而不是一个带有select的循环有两列?在使用相同的for
循环之前,您必须管理querydata()
和querydata()
。我会这样做:1)选择daily_date,daily_total from。。。2) 迭代结果。。3) 从两列中创建条目