gpt4 book ai didi

android - MPAndroidChart:未调用 PieChart onValueSelected

转载 作者:行者123 更新时间:2023-11-29 01:19:44 26 4
gpt4 key购买 nike

我对饼图有疑问。每次调用 Activity 时,我都会更新图表,我正在这样做:

private void setupPieChart() {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
mChart.setLayoutParams(params);

mChart.setUsePercentValues(true);

/**
* Hide the Description and the Legend.
*/
mChart.setDescription("");
mChart.getLegend().setEnabled(false);

/**
* Hole in the middle.
*/
mChart.setDrawHoleEnabled(true);
mChart.setHoleRadius(50);
mChart.setTransparentCircleRadius(55);

mChart.setRotationAngle(0);
mChart.setRotationEnabled(true);

mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
switch (e.getXIndex()) {
case 0:
startLearning(e.getXIndex());
break;
case 1:
startLearning(e.getXIndex());
break;
case 2:
startLearning(e.getXIndex());
break;
case 3:
startLearning(e.getXIndex());
break;
case 4:
startLearning(e.getXIndex());
break;
default:
break;
}
}

@Override
public void onNothingSelected() {
System.out.println("onNothingSelected");
}
});

addDataForPieChart();
}

我正在添加数据:

private void addDataForPieChart() {
/**
* Data of the Chart.
*/
float[] value = mCurrentLearnSet.getCountFromLevel();
String[] names = {"First Level", "Second Level", "Third Level", "Forth Level", "Fifth Level"};

/**
* Create needed Entries.
*/
List<Entry> entries = new ArrayList<>();
List<String> strings = new ArrayList<>();
for (int i = 0; i < value.length; i++) {
if (value[i] != 0) {
entries.add(new Entry(value[i], i));
strings.add(names[i]);
}
}

/**
* Create pie data set.
*/
PieDataSet dataSet = new PieDataSet(entries, "Your Progress");
dataSet.setSliceSpace(3);
dataSet.setSelectionShift(5);

/**
* Setup Colors.
*/
dataSet.setColors(ColorTemplate.LIBERTY_COLORS);

/**
* Instantiate pie data object.
*/
PieData data = new PieData(strings, dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(13f);
data.setValueTextColor(R.color.primary_text);

/**
* Set the Data to the PieChart.
*/
mChart.setData(data);

/**
* Undo all highlights.
*/
mChart.highlightValues(null);

/**
* Update pie chart.
*/
mChart.notifyDataSetChanged();
mChart.invalidate();
}

我的问题如下:

图表中每次创建时都有不同数量的切片。 OnChartValueSelectedListener() 有时无法正常工作。切片显示正确,但方法 onValueSelected() 从未被调用,因此我无法单击它们。虽然没有错误或突出显示。只是 onNothingSelected() 被调用。

请指教,我该怎么办?

最佳答案

问题是以下代码段中条目的索引缺失。由于我删除了 if 语句,代码再次正常工作。

/**
* Create needed Entries.
*/
List<Entry> entries = new ArrayList<>();
List<String> strings = new ArrayList<>();
for (int i = 0; i < value.length; i++) {
if (value[i] != 0) { // <--
entries.add(new Entry(value[i], i));
strings.add(names[i]);
}
}

关于android - MPAndroidChart:未调用 PieChart onValueSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37603305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com