MPAndroidChart-如何在BarEntry中动态设置值?
我正在使用。我可以处理静态内容。但是当我尝试与API集成时MPAndroidChart-如何在BarEntry中动态设置值?,android,mpandroidchart,Android,Mpandroidchart,我正在使用。我可以处理静态内容。但是当我尝试与API集成时 ArrayIndexOutOfBoundException错误如何解决此问题 例外情况:主要 进程:com.eengage.toit,PID:15219 java.lang.ArrayIndexOutOfBoundsException:长度=0;索引=0 位于com.github.mikephil.charting.buffer.BarBuffer.addBar(BarBuffer.java:37) 位于com.github.mikep
class Top10UsersChartDetails extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String response = null;
try {
response = apiDetails.Top10UsersChartFunc(params[0], params[1]);
} catch (Exception e) {
}
return response;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
try {
JSONObject resObj = new JSONObject(s);
String status = resObj.getString("status");
String Month = resObj.getString("Month");
JSONArray userdataDetailsArray = resObj.getJSONArray("userdata");
for (int j = 0; j < userdataDetailsArray.length(); j++) {
JSONObject CampaignDetailsArrayObject = userdataDetailsArray.getJSONObject(j);
String userId = CampaignDetailsArrayObject.getString("userId");
String UserName = CampaignDetailsArrayObject.getString("UserName");
String CountRunning = CampaignDetailsArrayObject.getString("Count");
String position=CampaignDetailsArrayObject.getString("position");
float fp1 = Float.parseFloat(CountRunning);
BARENTRY1.add(new BarEntry(fp1,j));
BarEntryLabels1.add("User#"+position);
}
horizontalBarChart.notifyDataSetChanged();
horizontalBarChart.invalidate();
} else {
}
} catch (Exception e) {
}
}
/**
* Created by aghatiki on 8/25/2016.
*/
public class MyAxisValueFormatter implements AxisValueFormatter {
private String[] mValues;
public MyAxisValueFormatter(String[] values)
{
this.mValues = values;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mValues[(int) value];
}
@Override
public int getDecimalDigits() {
return 0;
}
public class MainActivity extends AppCompatActivity {
BarChart barChart;
String[] values = new String[]{"June","July","August","September","October","Novenber"};
final String[] quarters = new String[] { "Q1", "Q2", "Q3", "Q4" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
barChart = (BarChart) findViewById(R.id.bargraph);
ArrayList<BarEntry> barEntries = new ArrayList<>();
barEntries.add(new BarEntry(0f,30f));
barEntries.add(new BarEntry(1f,80f));
barEntries.add(new BarEntry(2f,60f));
barEntries.add(new BarEntry(3f,50f));
barEntries.add(new BarEntry(4f,70f));
barEntries.add(new BarEntry(5f,60f));
BarDataSet barDataSet = new BarDataSet(barEntries,"Dates");
ArrayList<String> theDates = new ArrayList<>();
theDates.add("April");
theDates.add("MAy");
theDates.add("June");
theDates.add("July");
theDates.add("August");
theDates.add("September");
BarData theData = new BarData(barDataSet);
theData.setBarWidth(0.9f);
barChart.setData(theData);
barChart.setTouchEnabled(true);
barChart.setDragEnabled(true);
barChart.setScaleEnabled(true);
barChart.setFitBars(true);
barChart.setDescription("Test data on the bar");
XAxis xAxis = barChart.getXAxis();
xAxis.setValueFormatter(new MyAxisValueFormatter(values));
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
}
}
horizontalBarChart.notifyDataSetChanged();
horizontalBarChart.invalidate();
Bardataset = new BarDataSet(BARENTRY1, "Projects");
BARDATA = new BarData(BarEntryLabels1, Bardataset);
Bardataset.setColors(new int[]{Color.parseColor("#701112")});
horizontalBarChart.setData(BARDATA);
horizontalBarChart.setDrawBarShadow(false);
horizontalBarChart.setDrawValueAboveBar(true);
horizontalBarChart.setPinchZoom(false);
horizontalBarChart.setDrawGridBackground(false);
horizontalBarChart.setDescription("");
Bardataset.setBarSpacePercent(10f);
Legend legend = horizontalBarChart.getLegend();
legend.setEnabled(false);
horizontalBarChart.setTouchEnabled(false);
XAxis xAxis1 = horizontalBarChart.getXAxis();
xAxis1.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis1.setTextSize(8);
xAxis1.setSpaceBetweenLabels(8);
xAxis1.setTextColor(Color.parseColor("#701112"));
xAxis1.setTypeface(tf);
YAxis leftAxis = barChart.getAxisLeft();
leftAxis.setEnabled(false);