-1

i am developing a android app with firebase leaderboard, it working well, but crash when i click on leaderboard, here is stack trace logs, i am getting 2 error:

E/UncaughtException: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1

E/AndroidRuntime: FATAL EXCEPTION: main

12-02 01:05:53.969 3508-3508/com.example.myapp E/UncaughtException: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
                                                                            at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                                            at java.util.ArrayList.get(ArrayList.java:308)
                                                                            at com.example.myapp.activity.LeaderboardActivity$4.onChildAdded(LeaderboardActivity.java:167)
                                                                            at com.google.android.gms.internal.zzaer.zza(Unknown Source)
                                                                            at com.google.android.gms.internal.zzagp.zzSu(Unknown Source)
                                                                            at com.google.android.gms.internal.zzags$1.run(Unknown Source)
                                                                            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)
12-02 01:05:54.215 3508-3508/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.example.myapp, PID: 3508
                                                                     java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
                                                                         at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                                         at java.util.ArrayList.get(ArrayList.java:308)
                                                                         at com.examle.myapp.activity.LeaderboardActivity$4.onChildAdded(LeaderboardActivity.java:167)
                                                                         at com.google.android.gms.internal.zzaer.zza(Unknown Source)
                                                                         at com.google.android.gms.internal.zzagp.zzSu(Unknown Source)
                                                                         at com.google.android.gms.internal.zzags$1.run(Unknown Source)
                                                                         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)

both blue lines indicate error on this line in leaderboardactivity.java

if (leaderboards.get(1).getName().equalsIgnoreCase(displayName)) {

here is code snippet from leaderboardactivity.java

private void getLeaderboard() {

        databaseLeaderboard.orderByChild("score").limitToLast((int) totalValue).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
                Leaderboard leaderboard = dataSnapshot.getValue(Leaderboard.class);
                leaderboards.add(leaderboard);

                if (leaderboards.size() >= (int) totalValue) {
                    Collections.reverse(leaderboards);
                    leaderboardAdapterNew.notifyDataSetChanged();
                }

                if (leaderboards.size() == totalValue) {


                    if (leaderboards.get(0).getName().equalsIgnoreCase(displayName)) {
                        txtUname1.setText("Me");
                    } else {
                        txtUname1.setText(leaderboards.get(0).getName());
                    }
                    if (leaderboards.get(1).getName().equalsIgnoreCase(displayName)) {
                        txtUname2.setText("Me");
                    } else {
                        txtUname2.setText(leaderboards.get(1).getName());
                    }
                    if (leaderboards.get(2).getName().equalsIgnoreCase(displayName)) {
                        txtUname3.setText("Me");
                    } else {
                        txtUname3.setText(leaderboards.get(2).getName());
                    }

can someone tell me where is my fault?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
sanjay
  • 3
  • 1

1 Answers1

1

Yes, you are trying to access an index that doesn't exist:

Change this :

if (leaderboards.size() == totalValue) {

To this:

if (leaderboards.size() == totalValue && totalValue > 2) {
diegoveloper
  • 93,875
  • 20
  • 236
  • 194
  • thanks. bro, for doing my homework. actually i am not a developer, and i bought this project from codecanyon, now author not responding my messages, so at last after 3 day i asked it on stackoverflow. thankyou – sanjay Dec 01 '17 at 20:24