2016-12-18 6 views
0

Я использую MPAndroidChart и у меня есть один вопрос:Изменить круг цвет по выбору в виде графика

Как я могу изменить цвет круга на тот что щелкнул пользователь?

Вот то, что я до сих пор в моем OnChartValueSelectedListener:

lineChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { 
     @Override 
     public void onValueSelected(Entry entry, int i, Highlight highlight) { 
      LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getContext()); 
      Intent intent = new Intent(NewMainActivity.DIARY_ACTION); 
      intent.putExtra("date", points.get(highlight.getXIndex()).getDate()); 
      manager.sendBroadcast(intent); 
    ////////////////Here I want to change the color////////////// 
     } 

     @Override 
     public void onNothingSelected() { 

     } 
    }); 

ответ

1

Ответ, который я нашел, чтобы извлечь поле класса с именем myHighlight и обновлять его в слушателе, как это:

lineChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { 
     @Override 
     public void onValueSelected(Entry entry, int i, Highlight highlight) { 
      LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getContext()); 
      Intent intent = new Intent(NewMainActivity.DIARY_ACTION); 
      intent.putExtra("date", points.get(highlight.getXIndex()).getDate()); 
      manager.sendBroadcast(intent); 
      myHighlight = highlight.getXIndex(); 
      valuesCount = new int[lineChart.getValueCount()]; 
      setClickedPointGraphColor(valuesCount, clickedGraphPointColor); 
     } 

     @Override 
     public void onNothingSelected() { 

     } 
    }); 

Затем я написал метод setClickedPointGraphColor(), где я установил цвета кругов в соответствии с состоянием myHighlight:

public void setClickedPointGraphColor(int[] valuesCount, int color) { 
    for (int i =0; i < valuesCount.length; i++){ 
     if (i == myHighlight){ 
      valuesCount[i] = color; 
     } else { 
      valuesCount[i] = regularGraphPointColor; 
     } 
    } 
} 

Поскольку я обновил набор данных, мне нужно будет позвонить notifyDataSetChanged().