在android中使用MPAndroidChart从数据库检索数据并在条形图中显示它们

在android中使用MPAndroidChart从数据库检索数据并在条形图中显示它们,android,database,sqlite,mpandroidchart,Android,Database,Sqlite,Mpandroidchart,我知道如何使用MPAndroidChart在条形图中显示原始数据,但在实际场景中遇到了问题。我的sqlite数据库中有一些数据,我想在条形图中显示它们。请给我一些参考或简单的例子 数据库表有两列“月份”和一些数字。例如:一月=200,二月=300,等等 我找了很多,但找不到合适的。他们要么是2-3岁,要么不是我提到的那种类型 提前谢谢。这是我问题的答案。 这是两种在阵列中存储x轴数据和y轴数据的方法 public ArrayList<String> queryXData(){

我知道如何使用MPAndroidChart在条形图中显示原始数据,但在实际场景中遇到了问题。我的sqlite数据库中有一些数据,我想在条形图中显示它们。请给我一些参考或简单的例子

数据库表有两列“月份”和一些数字。例如:一月=200,二月=300,等等

我找了很多,但找不到合适的。他们要么是2-3岁,要么不是我提到的那种类型


提前谢谢。

这是我问题的答案。 这是两种在阵列中存储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) 从两列中创建条目