2014-10-11 2 views
1

안녕하세요, 데이터베이스에서 가져온 데이터로 파이 차트를 표시하고 싶지만 한 가지 결과 만 표시 할 수 있습니다. 나는 어디서 오류인지 이해하지 못한다. 당신의 도움을 주셔서 감사합니다.MPAndroidChart - SQLite 데이터베이스의 데이터로 그립니다.

String sql = ......; 

    Cursor c = db.rawQuery(sql, null); 
    int count = c.getCount(); 

    double[] values = new double[count]; 
    String[] categoryNames = new String[count]; 
    int[] colori = new int [count]; 

    for(int m=0; m<count; m++) { 
     c.moveToNext();  
     categoryNames[m] = c.getString(0); 
     values[m] = c.getDouble(1); 
     colori[m] = c.getInt(2); 


    ArrayList<Entry> yVals1 = new ArrayList<Entry>(); 

    for (int i = 0; i < categoryNames.length; i++) { 
     yVals1.add(new Entry(m, m, (double) (values[i]))); 
    } 
    ArrayList<String> xVals = new ArrayList<String>();//array legend 

    for (int i = 0; i < categoryNames.length; i++) 
     xVals.add(categoryNames[m % categoryNames.length]); 

    PieDataSet set1 = new PieDataSet(yVals1, "Election Results"); 
    set1.setSliceSpace(3f); 
    set1.setColors(ColorTemplate.createColors(colori)); 

    PieData data = new PieData(xVals,set1); 
    mChart.setData(data); 
    // undo all highlights 
    mChart.highlightValues(null);  
    mChart.invalidate(); 
} 
     c.close(); 
     db.close();   

}

EDIT ------------------------- 거의 해소되지만없이 데이터 I의 한 항상 동등한 부분으로 차트를 얻으십시오. 예를 들어, 다음과 같은 백분율을 가지고 있습니다. Category1 (15,4), Category2(30,8), Category3(53,8) 이것은 차트이며 오류를 찾으면서 찾으십시오. 감사 enter image description here

+0

코드를 좋아 보이는 – pskink

+0

내 대답에서보세요 . 문제는 귀하의 코드에서 간단한 실수 일 수 있습니다. –

답변

2

문제는 루프에 대한 것은 가까이하지 않습니다 수 있습니다 : 당신은 닫는 대괄호 } 누락

for(int m=0; m<count; m++) { 
     c.moveToNext();  
     categoryNames[m] = c.getString(0); 
     values[m] = c.getDouble(1); 
     colori[m] = c.getInt(2); 

.

편집 :

그리고 올바르게 입력 객체를 생성되지 않습니다

yVals1.add(new Entry(m, m, (double) (values[i]))); 

그것은 다음과 같이해야합니다 :

yVals1.add(new Entry((float) values[i], i)); 
+0

내 게시물을 편집했습니다. 감사합니다 – user3608814

+0

제 편집을 참조하십시오. –

관련 문제