6

I have searched around google and have tried some "solutions" however none work for me. I am using 'com.github.PhilJay:MPAndroidChart:v3.1.0' and trying to make a line chart.

The error code is the following:

2021-06-29 11:57:35.319 com.example.myApp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myApp, PID: 15886
java.lang.NegativeArraySizeException: -58
    at com.github.mikephil.charting.utils.Transformer.generateTransformedValuesLine(Transformer.java:178)
    at com.github.mikephil.charting.renderer.LineChartRenderer.drawValues(LineChartRenderer.java:549)
    at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:278)
    at android.view.View.draw(View.java:23901)
    at android.view.View.updateDisplayListIfDirty(View.java:22776)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.draw(View.java:23904)
    at android.view.View.updateDisplayListIfDirty(View.java:22776)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.draw(View.java:23904)
    at com.android.internal.policy.DecorView.draw(DecorView.java:1282)
    at android.view.View.updateDisplayListIfDirty(View.java:22776)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:579)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:585)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:662)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:4994)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4701)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3818)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2575)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9916)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
    at android.view.Choreographer.doCallbacks(Choreographer.java:809)
    at android.view.Choreographer.doFrame(Choreographer.java:744)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:246)
    at android.app.ActivityThread.main(ActivityThread.java:8512)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

Note, nothing is pointing to a particular line in my code.

My code is the following:

private fun setMountain(mChart: LineChart){
    val entries = ArrayList<Entry>()
    entries.add(Entry(20.9f, 100f))
    entries.add(Entry(20.1f, 304f))
    entries.add(Entry(19.4f, 609f))
    entries.add(Entry(18.6f, 914f))
    entries.add(Entry(17.9f, 1219f))
    entries.add(Entry(17.3f, 1524f))
    entries.add(Entry(16.6f, 1828f))
    entries.add(Entry(16f, 2133f))
    entries.add(Entry(15.4f, 2438f))
    entries.add(Entry(14.8f, 2743f))
    entries.add(Entry(14.3f, 3048f))
    entries.add(Entry(13.7f, 3352f))
    entries.add(Entry(13.2f, 3657f))
    entries.add(Entry(12.7f, 3962f))
    entries.add(Entry(12.3f, 4267f))
    entries.add(Entry(11.8f, 4572f))
    entries.add(Entry(11.4f, 4876f))
    entries.add(Entry(11f, 5181f))
    entries.add(Entry(10.5f, 5486f))
    entries.add(Entry(10.1f, 5791f))
    entries.add(Entry(9.7f, 6096f))
    entries.add(Entry(9.4f, 6400f))
    entries.add(Entry(9f, 6705f))
    entries.add(Entry(8.7f, 7010f))
    entries.add(Entry(8.4f, 7315f))
    entries.add(Entry(8.1f, 7620f))
    entries.add(Entry(7.8f, 7924f))
    entries.add(Entry(7.5f,8229f))
    entries.add(Entry(7.2f,8534f))
    entries.add(Entry(6.9f,8839f))
    entries.add(Entry(6.3f,9144f))

    val dataSet = LineDataSet(entries, "label")
    mChart.data = LineData(dataSet)
    mChart.invalidate()


    mChart.xAxis.position = XAxis.XAxisPosition.BOTTOM
}

I have tried to look at the following solutions, MPChart java.lang.NegativeArraySizeException: -54 https://github.com/PhilJay/MPAndroidChart/issues/2403

and it still doesn't work. I'm at a lost. Any help is appreciated. Thanks

EDIT::: Yo no way, things work now. I searched around again and found the following thread: https://github.com/PhilJay/MPAndroidChart/issues/2074#issuecomment-238458565

By adding

Collections.sort(entries, EntryXComparator())

it started working. Beats me because it was already sorted but eh it works now.

1
  • 1
    You should post the answer below to mark this question as resolved because it worked for me too :) Commented Oct 11, 2021 at 9:17

1 Answer 1

3

The question was edited to include the solution. The solution is to use:

Collections.sort(entries, EntryXComparator())

This is from: https://github.com/PhilJay/MPAndroidChart/issues/2074#issuecomment-238458565

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.