我开始使用HelloCharts库,发现在我的LineChartView中添加两组数据有些困难。这就是我的做法:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_user_details, container, false);
performanceChart = (LineChartView)rootView.findViewById(R.id.performanceChart);
performanceChart.setInteractive(false);
addScoreEntriesToChart();
addRankEntriesToChart();
return rootView;
}
private void addScoreEntriesToChart() {
List<PointValue> values = new ArrayList<PointValue>();
ArrayList<Double> latestScores = currentPlayer.getLatestScores();
for(int i = 0; i < latestScores.size(); i++){
values.add(new PointValue(i+1, Float.valueOf(String.valueOf(latestScores.get(i)))));
}
performanceChart.setLineChartData(getLineSettings(values, Color.parseColor("#0036D9")));
}
private void addRankEntriesToChart() {
List<PointValue> values = new ArrayList<PointValue>();
ArrayList<Integer> latestRanks = currentPlayer.getLatestRanks();
for(int i = 0; i < latestRanks.size(); i++){
values.add(new PointValue(i+1, Float.valueOf(latestRanks.get(i))));
}
performanceChart.setLineChartData(getLineSettings(values, Color.parseColor("#84BE67")));
}
@NonNull
private LineChartData getLineSettings(List<PointValue> values, int lineColor) {
Line line = new Line(values).setColor(lineColor).setCubic(true);
line.setStrokeWidth(2);
line.setPointRadius(0);
List<Line> lines = new ArrayList<Line>();
lines.add(line);
LineChartData data = new LineChartData();
data.setLines(lines);
return data;
}
显然,我做错了,因为我最终只看到LineChartView上的一行(RankEntries - 添加的最后一行)。 尝试谷歌这个问题没有得到答案。 任何帮助将不胜感激:)
答案 0 :(得分:1)
向图表添加2个数据时。您必须在数据中添加两行,然后将该数据设置为图表:
List<PointValue> values = new ArrayList<PointValue>();
ArrayList<Double> latestScores = currentPlayer.getLatestScores();
for(int i = 0; i < latestScores.size(); i++){
values.add(new PointValue(i+1, Float.valueOf(String.valueOf(latestScores.get(i)))));
}
List<PointValue> values2 = new ArrayList<PointValue>();
ArrayList<Integer> latestRanks = currentPlayer.getLatestRanks();
for(int i = 0; i < latestRanks.size(); i++){
values2.add(new PointValue(i+1, Float.valueOf(latestRanks.get(i))));
}
之后:
Line line = new Line(values).setColor(Color.RED);
Line line2 = new Line(values2).setColor(Color.BLUE);
List<Line> lines = new ArrayList<Line>();
lines.add(line);
lines.add(line2);