2016-08-11 3 views
0

Я создал диаграмму, которая будет получать несколько наборов данных из моей базы данных, но она не отображается на графике и не показывает никаких данных. Может ли кто-нибудь указать на проблему? Я пробовал читать учебник mpandroidchart, но я все еще не могу указать на проблему. Заранее спасибоMP Android chart нет данных avi

public ArrayList<String> queryXData(){ 
    ArrayList<String> xNewData = new ArrayList<String>(); 
    String query = "SELECT Subject FROM gradesinfo ORDER BY Subject"; 
    Cursor cursor = cn.rawQuery(query, null); 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
     xNewData.add(cursor.getString(cursor.getColumnIndex("Subject"))); 
    } 
    cursor.close(); 
    return xNewData; 
} 

public ArrayList<Float> queryYData(){ 
    ArrayList<Float> yNewData = new ArrayList<Float>(); 
    String query = "SELECT PG FROM gradesinfo ORDER BY Subject"; 
    Cursor cursor = cn.rawQuery(query, null); 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
     yNewData.add(cursor.getFloat(cursor.getColumnIndex("PG"))); 
    } 
    cursor.close(); 
    return yNewData; 
} 


public ArrayList<Float> queryYData2(){ 
    ArrayList<Float> yNewData2 = new ArrayList<Float>(); 
    String query = "SELECT MG FROM gradesinfo ORDER BY Subject"; 
    Cursor cursor = cn.rawQuery(query, null); 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
     yNewData2.add(cursor.getFloat(cursor.getColumnIndex("MG"))); 
    } 
    cursor.close(); 
    return yNewData2; 
} 


public ArrayList<Float> queryYData3(){ 
    ArrayList<Float> yNewData3 = new ArrayList<Float>(); 
    String query = "SELECT FG FROM gradesinfo ORDER BY Subject"; 
    Cursor cursor = cn.rawQuery(query, null); 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
     yNewData3.add(cursor.getFloat(cursor.getColumnIndex("FG"))); 
    } 
    cursor.close(); 
    return yNewData3; 
} 


private void addData(){ 
    Cursor cursor = cn.rawQuery("SELECT PG, MG, FG FROM gradesinfo ORDER BY Subject", null); 

    if(cursor.getCount()>=2){ 

     ArrayList<BarEntry> yVals = new ArrayList<BarEntry>(); 
     for (int i = 0; i < queryYData().size(); i++) 
      yVals.add(new BarEntry(queryYData().get(i), i)); 

     ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>(); 
     for (int i = 0; i < queryYData2().size(); i++) 
      yVals1.add(new BarEntry(queryYData2().get(i), i)); 

     ArrayList<BarEntry> yVals2 = new ArrayList<BarEntry>(); 
     for (int i = 0; i < queryYData3().size(); i++) 
      yVals2.add(new BarEntry(queryYData3().get(i), i)); 

     ArrayList<String> xVals = new ArrayList<String>(); 
     for(int i = 0; i < queryXData().size(); i++) 
      xVals.add(queryXData().get(i)); 

     BarDataSet dataSet = new BarDataSet(yVals, "Prelim"); 
     dataSet.setColors(ColorTemplate.COLORFUL_COLORS); 

     BarDataSet dataSet2 = new BarDataSet(yVals1, "Midterm"); 
     dataSet2.setColors(ColorTemplate.COLORFUL_COLORS); 

     BarDataSet dataSet3 = new BarDataSet(yVals2, "Finals"); 
     dataSet3.setColors(ColorTemplate.COLORFUL_COLORS); 


     ArrayList<BarDataSet> dataset = new ArrayList<BarDataSet>(); 
     dataset.add(dataSet); 
     dataset.add(dataSet2); 
     dataset.add(dataSet3); 

     BarData data = new BarData(xVals, dataset); 


     LimitLine line = new LimitLine(75f, "Passing Grade"); 
     line.setTextSize(8f); 
     line.setLineWidth(4f); 
     YAxis leftAxis = barChart.getAxisLeft(); 
     leftAxis.addLimitLine(line); 

     barChart.setData(data); 
     barChart.setDescription("Grades Chart"); 
     barChart.animateY(2000); 
    } 
+0

Пожалуйста, предоставьте дополнительную информацию, чтобы мы могли помочь: В каком контексте называется 'addData()'? Вы уверены, что 'cursor.getCount()' возвращает значение больше 1? Если возможно, укажите образец вывода вашего набора данных. – TR4Android

ответ

1

Я подозреваю, что ваша карта не знает о полученных данных. Скажите, что делать:

barChart.notifyDataSetChanged(); 
barChart.invalidate(); 
+0

попробовал, пока ничего не показывает. – user3219333

+0

Возможно, вы не правильно установили данные в диаграмму. См. Здесь пример кода - https://github.com/PhilJay/MPAndroidChart/issues/562 – blandger

Смежные вопросы