我对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);
}
}