2015-12-14 1 views
4

У меня есть HashMap, как этотMPAndroidChart не обновляет

LinkedHashMap<String, String> hash = new LinkedHashMap<>(); 
hash.put("2015-05-03", 100); 
hash.put("2015-05-04", 110); 
hash.put("2015-05-05", 90); 
hash.put("2015-05-06", 40); 

Я хочу разработать Linechart через MPAndroidChart, но он не работает, схема не является действительным, ничего, чтобы показать! Мне кажется мои коды недействительны.
вот мои коды:

private void setChartData(LinkedHashMap<String, String> lastMonthMediaLikes) 
    { 

     ArrayList<String> xVals = new ArrayList<>(); 

     for(Map.Entry<String, String> entry : lastMonthMediaLikes.entrySet()) 
     { 
      xVals.add(entry.getKey()); 
     } 



     ArrayList<Entry> vals1 = new ArrayList<>(); 
     int i = 0; 
     for(Map.Entry<String, String> entry : lastMonthMediaLikes.entrySet()) 
     { 
      vals1.add(new Entry(Float.valueOf(entry.getValue()), i)); 
      i++; 
     } 

     // create a dataset and give it a type 
     LineDataSet set1 = new LineDataSet(vals1, "DataSet 1"); 
     set1.setDrawCubic(true); 
     set1.setCubicIntensity(0.2f); 
     //set1.setDrawFilled(true); 
     set1.setDrawCircles(false); 
     set1.setLineWidth(1.8f); 
     set1.setCircleSize(4f); 
     set1.setCircleColor(Color.WHITE); 
     set1.setHighLightColor(Color.rgb(244, 117, 117)); 
     set1.setColor(Color.WHITE); 
     set1.setFillColor(Color.WHITE); 
     set1.setFillAlpha(100); 
     set1.setDrawHorizontalHighlightIndicator(false); 
     set1.setFillFormatter(new FillFormatter() 
     { 
      @Override 
      public float getFillLinePosition(LineDataSet dataSet, LineDataProvider dataProvider) 
      { 
       return -10; 
      } 
     }); 

     // create a data object with the datasets 
     LineData data = new LineData(xVals, set1); 
     //data.setValueTypeface(tf); 
     data.setValueTextSize(9f); 
     data.setDrawValues(false); 

     // set data 
     chart.setData(data); 
    } 

Пожалуйста, совет, что я должен делать?

ответ

10

Вы устанавливаете данные через setData(...) но вы не освежающийView по телефону invalidate().

Это должно сделать работу:

LineChart chart = ...; 

chart.setData(...); // set data 
chart.invalidate(); // refresh after setting data 
0

Попробуйте также изменение data.setDrawValues ​​(ложь); к data.setDrawValues ​​(true);

+0

Пожалуйста, убедитесь, что коды правильно отформатированы, когда вы публикуете что-либо здесь. –

+0

Пожалуйста, не публикуйте открытый код, также укажите объяснение того, что делает код. –

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

  • Нет связанных вопросов^_^