使用MPAndroidChart从SQLite数据库制作饼图

时间:2018-07-14 07:34:12

标签: android mpandroidchart

我对Android App开发还很陌生,完全不了解如何从SQLite数据库创建MPAndroidChart。我已经审查了许多其他问题,但它们并没有帮助。我回顾了一些使用硬编码数据构建图表的方法,但它们也无济于事。我已经建立了一个预算数据库,我想要一个饼图,该饼图显示按Income_category列出的总收入的查询结果。谁能提供示例代码或为我指出一个好的答案?下面是我从另一个问题复制过来的代码,并试图在我的应用程序中实现它:

谢谢!

公共类CYIncomeChartActivity扩展了AppCompatActivity {

SQLiteDatabase mSQLiteDatabase;

BudgetDbHelper mDBHelper;

SQLiteDatabase mSQLiteDatabase;

// Database helper object //
private BudgetDbHelper mDbHelper;

BarChart barChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cy_income_chart);

    // Initialize mDbHelper for the query //
    mDbHelper = new BudgetDbHelper(this);

        public ArrayList<String> queryXData(){
        ArrayList<String> xNewData = new ArrayList<String>();
        String query = "SELECT " + BudgetContract.BudgetEntry.COLUMN_INCOME_CATEGORY + " FROM " + BudgetContract.BudgetEntry.TABLE_NAME;
        Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
        for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
            xNewData.add(cursor.getString(cursor.getColumnIndex(BudgetContract.BudgetEntry.COLUMN_INCOME_CATEGORY)));
        }
        cursor.close();
        return xNewData;
    }

    public ArrayList<Float> queryYData(){
        ArrayList<Float> yNewData = new ArrayList<Float>();
        String query = "SELECT " + BudgetContract.BudgetEntry.COLUMN_INCOME + " FROM " + BudgetContract.BudgetEntry.TABLE_NAME;
        Cursor cursor = mSQLiteDatabase.rawQuery(query, null);
        for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
            yNewData.add(cursor.getFloat(cursor.getColumnIndex(BudgetContract.BudgetEntry.COLUMN_INCOME)));
        }
        cursor.close();
        return yNewData;
    }

}

private void addData(){

    ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();

    Object mExpenseDB;
    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);

}

}

0 个答案:

没有答案