Я хочу получить значения для записи x, которая является строкой при нажатии на сектор пирога. как? Я могу получить значение y, используя getVal(), но как насчет x? Значение для ввода оси x - из sqlite. Код является таким, как показано нижеMPAndroidChart -get значение x entry
public class chart extends Activity {
private FrameLayout chartContainer;
private PieChart mChart;
Context CTX = this;
DatabaseOperations DOP;
@Override
protected void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.chart);
chartContainer=(FrameLayout) findViewById(R.id.chartContainer);
mChart=new PieChart(this);
//add pie chart to the layout
chartContainer.addView(mChart);
//enable hole and configure
mChart.setDrawHoleEnabled(true);
mChart.setHoleColorTransparent(true);
mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { if (e == null)
return;
Toast.makeText(chart.this, xVals.get(e.getXIndex()) + " used " + e.getVal() + "kwh", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected() {
}
});
//add data
addeachData();
Legend l=mChart.getLegend();
l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
}
protected void addeachData() {
DatabaseOperations DOP = new DatabaseOperations(CTX);
Cursor CR = DOP.getInformation(DOP);
int count=CR.getCount();
float[]values=new float[count];
String[]name=new String[count];
for (int m=0; m<count; m++){
CR.moveToNext();
name[m]=CR.getString(0);
values[m]=CR.getFloat(1);
}
ArrayList<Entry> yVals = new ArrayList<Entry>();
for (int i = 0; i <name.length; i++)
yVals.add(new Entry(values[i], i));
final ArrayList<String> xVals = new ArrayList<String>();
for (int i = 0; i <name.length; i++)
xVals.add(name[i]);
ArrayList<Integer> colors=new ArrayList<Integer>();
for(int c: ColorTemplate.VORDIPLOM_COLORS)
colors.add(c);
colors.add(ColorTemplate.getHoloBlue());
dataSet.setColors(colors);
PieData data=new PieData(xVals, dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.GRAY);
mChart.setData(data);
mChart.highlightValues(null);
mChart.invalidate();
}
}
Я не могу получить доступ к xVal, я обновил свой код. Можете ли вы мне помочь? спасибо – whoami
Я положил объявление xvals вверх с контекстом и базой данных, и теперь это сработало. Спасибо – whoami