CARVIEW |
Select Language
HTTP/2 200
date: Sun, 27 Jul 2025 14:19:24 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
link: ; rel=preload; as=fetch; crossorigin=use-credentials
referrer-policy: no-referrer-when-downgrade
server-timing: issue_layout-fragment;desc="issue_layout fragment";dur=185.11036,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=550.258123,issue_conversation_sidebar-fragment;desc="issue_conversation_sidebar fragment";dur=44.464016,nginx;desc="NGINX";dur=0.592802,glb;desc="GLB";dur=101.27491
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: a2eb102
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=dJwZmjktmIfq1m1rgZCmDaYfdWk6aR3DCy%2FxLUvUisieeqOfOwdv1Yjpg6j%2Bj775gTZ5kuTR2SXX24xN59LqgK2ZZ8lX9AOqNtR9W6dnqtmPro%2FDvP0otyxwCdyLdrH%2FGDnOmlZ4e7drwtdc4fou%2FsXqyc1mlXS%2FGTMrqKq15%2FpjY4OxWnuqnj0yAWFuJWlExzdukq2jo40YhrBzC5jhyR2m3dKC%2BgkxyZVp1bM%2BzyanoDXnBN8BDV9xQRGOquF%2FY1NZTYJBL1z10RxiNrZH8g%3D%3D--dRNbVcaaHznGoYF4--8AaZo1HntE8ywq3%2Ft12itQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.484785277.1753625963; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 14:19:23 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 14:19:23 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: DA72:93466:592683:75E34F:6886356B
v.3.0.0-beta1 BarChart: ArrayIndexOutOfBoundsException when formatter applied, granularity is enabled and there's only one data point · Issue #2153 · PhilJay/MPAndroidChart · GitHub
No one assignedNo labelsNo projectsNo milestoneNone yetNo branches or pull requests
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 9k
Closed
Description
Hi, I've faced an ArrayIndexOutOfBoundsException under following conditions:
- AxisValueFormatter is applied to x axis, where formatted value is an item of a list;
- granularity is enabled for x axis;
- the data consists of only one value.
Here's the stacktrace:
java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
at java.util.ArrayList.get(ArrayList.java:310)
at com.example.asuprun.tempconverter.AnotherActivity$1.getFormattedValue(AnotherActivity.java:65)
at com.github.mikephil.charting.components.AxisBase.getFormattedLabel(AxisBase.java:451)
at com.github.mikephil.charting.components.AxisBase.getLongestLabel(AxisBase.java:437)
at com.github.mikephil.charting.renderer.XAxisRenderer.computeSize(XAxisRenderer.java:78)
at com.github.mikephil.charting.renderer.XAxisRenderer.computeAxisValues(XAxisRenderer.java:73)
at com.github.mikephil.charting.renderer.XAxisRenderer.computeAxis(XAxisRenderer.java:66)
at com.github.mikephil.charting.charts.BarLineChartBase.notifyDataSetChanged(BarLineChartBase.java:339)
at com.github.mikephil.charting.charts.Chart.setData(Chart.java:318)
at com.example.asuprun.tempconverter.AnotherActivity.plotData(AnotherActivity.java:88)
at com.example.asuprun.tempconverter.AnotherActivity.toggleData(AnotherActivity.java:98)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Simplified code:
public class AnotherActivity extends AppCompatActivity {
private ViewGroup chartView;
private Map<String, Integer> data;
private BarChart chart;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chart_layout);
chartView = (ViewGroup) findViewById(R.id.chart_view);
chart = new BarChart(this);
data = new LinkedHashMap<>();
data.put("6/15", 36);
data.put("8/15", 23);
chartView.addView(chart);
plotData();
}
private void plotData() {
chart.clear();
final ArrayList<String> xVals = new ArrayList<>();
ArrayList<BarEntry> yVals = new ArrayList<>();
for (Map.Entry<String, Integer> entry : data.entrySet()) {
yVals.add(new BarEntry(xVals.size(), entry.getValue()));
xVals.add(entry.getKey());
}
XAxis xAxis = chart.getXAxis();
xAxis.setDrawGridLines(false);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setGranularityEnabled(true);
xAxis.setValueFormatter(new AxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
try {
return xVals.get((int) value);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
return "stub";
}
}
@Override
public int getDecimalDigits() {
return 0;
}
}
);
chart.getAxisRight().setEnabled(false);
YAxis axisLeft = chart.getAxisLeft();
axisLeft.setAxisMinValue(0f);
axisLeft.setGranularityEnabled(true);
axisLeft.setGranularity(1f);
BarDataSet dataSet = new BarDataSet(yVals, "Data");
BarData barData = new BarData(dataSet);
barData.setBarWidth(0.7f);
chart.setData(barData);
chart.invalidate();
}
public void toggleData(View view) {
if (data.size() > 1) {
data.remove("8/15");
} else {
data.put("8/15", 23);
}
plotData();
}
}
Metadata
Metadata
Assignees
Labels
No labels
Projects
Milestone
Relationships
Development
Issue actions
You can’t perform that action at this time.