Tom Kuschka
Tom Kuschka

Reputation: 483

Try to add values to List<Integer>

when I tried to add some values to my List inside my onResume() method i got this error:

    java.lang.RuntimeException: Unable to resume activity {.../...MainActivity}: java.lang.UnsupportedOperationException
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3096)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3127)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2482)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5415)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
 Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:404)
        at java.util.AbstractList.add(AbstractList.java:425)
        at de.toeducate.tograde.MainActivity.onResume(MainActivity.java:151)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
        at android.app.Activity.performResume(Activity.java:6237) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3085)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3127)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2482)
            at android.app.ActivityThread.-wrap11(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5415)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)

and here is the code I wrote:

List<Integer> marks = Collections.emptyList();

    for (int i = 0; i < dataBase.getDataMark().size(); i++) {
        marks.add(dataBase.getDataMark().get(i).getValue());
    }

What does this mean?

Upvotes: 0

Views: 247

Answers (2)

Lars Blumberg
Lars Blumberg

Reputation: 21401

Collections.emptyList() returns an instance of AbstractList. This is meant by the line

Caused by: java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:404)

in your exception's stack trace. This said you cannot call add on your marks list as add is not implemented.

Instead instantiate marks with a class that allows for adding elements, such as ArrayList:

List<Integer> marks = new ArrayList<Integer>();

Besides ArrayList, LinkedList is another implementation of AbstractList that supports adding elements. Most typically programmers use an ArrayList.

Upvotes: 0

Paul Boddington
Paul Boddington

Reputation: 37655

Collections.emptyList(); returns a List that you cannot add to (hence the UnsupportedOperationException).

Use

List<Integer> marks = new ArrayList<Integer>();

instead.

Upvotes: 5

Related Questions