When size of data is 600, there is no exceltion. When the size of the data is 800 I am getting following exception, after completing all the iterations and exiting the loop at following line:
'imageAdapter = new ImageAdapter(MainActivity.getAppContext(), posters);'
Issue is not related to splitArray[] which is inside the loop. Please note that it works for smaller size data. Please help.
FATAL EXCEPTION: main
Process: com.udacityproject.svs.popularmovies, PID: 12517
java.lang.ArrayIndexOutOfBoundsException: length=5; index=5
at com.udacityproject.svs.popularmovies.MainActivity$1.deliverResult(MainActivity.java:130)
at com.udacityproject.svs.popularmovies.MainActivity$1.deliverResult(MainActivity.java:57)
at android.support.v4.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:255)
at android.support.v4.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:80)
at android.support.v4.content.ModernAsyncTask.finish(ModernAsyncTask.java:487)
at android.support.v4.content.ModernAsyncTask$InternalHandler.handleMessage(ModernAsyncTask.java:504)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Constructor for Image Adapter :
public ImageAdapter(@NonNull Context context, @NonNull Poster[] objects){
super(context, 0, objects);
posters = objects;
}
Function:
public void deliverResult(String[] data) {
if (data != null) {
Poster[] posters = new Poster[data.length];
for (int i=0; i<data.length; i++) {
String imagePath = "http://image.tmdb.org/t/p/w185/" ;
int imageId;
String title;
String overview;
String rating;
String releaseDate;
String[] splitArray;
try {
splitArray = data[i].split("[*]");
} catch (PatternSyntaxException e) {
e.printStackTrace();
return;
}
imagePath+=splitArray[2];
imageId = Integer.valueOf(splitArray[0]);
title = splitArray[1];
rating = splitArray[3];
overview = splitArray[4];
releaseDate = splitArray[5];
posters[i] = new Poster( imageId, imagePath, title, overview, rating, releaseDate);
}
imageAdapter = new ImageAdapter(MainActivity.getAppContext(), posters);
mMoviePoster.setAdapter(imageAdapter);
}
}