使用SQLite数据库填充MPAndroidChart条形图

使用SQLite数据库填充MPAndroidChart条形图,android,sqlite,mpandroidchart,Android,Sqlite,Mpandroidchart,我有一个MPAndroidChart,我想用它来显示SQL查询的结果,该查询给出我的收入列的总和,并按收入类别对其进行分组。这里的另一个用户让我更接近于让它工作,但我在执行BarChart.setData时收到一个空对象引用错误。Debug显示查询是有效的,所以我不明白为什么它是空的。以下是BudgetDbHelper中的代码: public ArrayList<BarEntry> getBarEntries() { String income_sum_column = "i

我有一个MPAndroidChart,我想用它来显示SQL查询的结果,该查询给出我的收入列的总和,并按收入类别对其进行分组。这里的另一个用户让我更接近于让它工作,但我在执行BarChart.setData时收到一个空对象引用错误。Debug显示查询是有效的,所以我不明白为什么它是空的。以下是BudgetDbHelper中的代码:

public ArrayList<BarEntry> getBarEntries() {
    String income_sum_column = "income_sum";
    SQLiteDatabase db = this.getReadableDatabase();
    String[] columns = new String[]{"SUM(income) AS " + income_sum_column,"income_category"};
    Cursor csr = db.query("transactions",columns,null,null,"income_category",null,null);
    ArrayList<BarEntry> rv = new ArrayList<>();
    while(csr.moveToNext()) {
        rv.add(new BarEntry(
                csr.getInt(csr.getColumnIndex("income_category")),
                csr.getFloat(csr.getColumnIndex(income_sum_column))
        ));
    }
    csr.close();
    return rv; 
public ArrayList getBarEntries(){
字符串income\u sum\u column=“income\u sum”;
SQLiteDatabase db=this.getReadableDatabase();
String[]columns=新字符串[]{“SUM(income)AS”+income_SUM_column,“income_category”};
游标csr=db.query(“交易”,列,空,空,“收入类别”,空,空);
ArrayList rv=新的ArrayList();
while(csr.moveToNext()){
rv.添加(新巴伦特里)(
csr.getInt(csr.getColumnIndex(“收入类别”),
csr.getFloat(csr.getColumnIndex(收入和列))
));
}
csr.close();
返回rv;
以下是CYIncomeChartActivity的代码:

public class CYIncomeChartActivity extends AppCompatActivity {

    SQLiteDatabase sqLiteDatabase;

    // Database helper object //
    private BudgetDbHelper mDbHelper;

    BarChart barChart;

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

        mDbHelper = new BudgetDbHelper(this);
        sqLiteDatabase = mDbHelper.getWritableDatabase();

        ArrayList<BarEntry> barEntries = mDbHelper.getBarEntries();

        BarDataSet barDataSet = new BarDataSet(barEntries,"Income By Income Category");
        barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

        BarData barData = new BarData(barDataSet);
        barData.setBarWidth(0.9f);

        barChart.setData(barData);

    }


}
公共类CYIncomeChartActivity扩展了AppCompatActivity{
SQLiteDatabase SQLiteDatabase;
//数据库辅助对象//
私人预算的帮助者;
条形图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u cy\u income\u图表);
mDbHelper=新的预算BHELPER(本);
sqLiteDatabase=mDbHelper.getWritableDatabase();
ArrayList barEntries=mDbHelper.getBarEntries();
BarDataSet BarDataSet=新的BarDataSet(barEntries,“按收入类别划分的收入”);
设置颜色(ColorTemplate.Colorbid_COLORS);
BarData BarData=新的BarData(barDataSet);
立根宽度(0.9f);
条形图.设置数据(barData);
}
}

您的问题是
条形图
为空,因为您从未将其设置为任何值

barChart = findViewById(R.id.my_chart);
在你打电话之前先进去

barChart.setData(barData);

我觉得自己像个白痴,忘记了这么简单的事情!非常感谢!@Tyler v你能帮我一下吗,