2016-12-18 1 views
0

MPAndroidChart를 사용하고 있는데 하나의 질문이 있습니다.선 차트의 선택시 원 색상 변경

사용자가 클릭하는 원의 색상을 어떻게 변경할 수 있습니까? 여기

는 지금까지에서 무엇을 내 OnChartValueSelectedListener :

내가 찾은 답은 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); 
    ////////////////Here I want to change the color////////////// 
     } 

     @Override 
     public void onNothingSelected() { 

     } 
    }); 

답변

1

:

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() { 

     } 
    }); 

그런 다음 myHighlight의 상태와 일치하도록 원의 색을 설정하는 setClickedPointGraphColor() 메서드를 작성했습니다.

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()으로 전화해야합니다.

관련 문제