MPAndroidChart-如何在BarEntry中动态设置值?

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

我正在使用。我可以处理静态内容。但是当我尝试与API集成时

  • ArrayIndexOutOfBoundException错误如何解决此问题
  • 例外情况:主要 进程:com.eengage.toit,PID:15219 java.lang.ArrayIndexOutOfBoundsException:长度=0;索引=0 位于com.github.mikephil.charting.buffer.BarBuffer.addBar(BarBuffer.java:37) 位于com.github.mikephil.charting.buffer.HorizontalBarBuffer.feed(HorizontalBarBuffer.java:52) 位于com.github.mikephil.charting.renderer.HorizontalBarChartRenderer.drawDataSet(HorizontalBarChartRenderer.java:66) 位于com.github.mikephil.charting.renderer.BarChartRenderer.drawData(BarChartRenderer.java:74) 位于com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:247) 在android.view.view.draw(view.java:14508) 在android.view.view.getDisplayList中(view.java:13405) 在android.view.view.getDisplayList中(view.java:13447) 在android.view.view.draw(view.java:14225) 位于android.view.ViewGroup.drawChild(ViewGroup.java:3105) 位于android.view.ViewGroup.dispatchDraw(ViewGroup.java:2942) 在android.view.view.getDisplayList(view.java:13400) 在android.view.view.getDisplayList中(view.java:13447) 在android.view.view.draw(view.java:14225) 位于android.view.ViewGroup.drawChild(ViewGroup.java:3105) 位于android.view.ViewGroup.dispatchDraw(ViewGroup.java:2942) 在android.view.view.getDisplayList(view.java:13400) 在android.view.view.getDisplayList中(view.java:13447) 在android.view.view.draw(view.java:14225) 位于android.view.ViewGroup.drawChild(ViewGroup.java:3105) 位于android.view.ViewGroup.dispatchDraw(ViewGroup.java:2942) 在android.view.view.getDisplayList(view.java:13400) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 位于android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3079) 在android.view.view.getDisplayList(view.java:13338) 在android.view.view.getDisplayList中(view.java:13447) 在安卓
    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);