Unable to start activity ComponentInfo java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

Учу JSON, вот решил написать легкую игру угадай звезду. Написал все как в примерах, ошибок в коде нет, но при запуске в логах вылазит эта ошибка. С чем это связано и как решить не знаю...может подскажет кто?

public class MainActivity extends AppCompatActivity {

private ImageView photoStar;
private Button btn0, btn1, btn2, btn3;
private String url = "https://bodysize.org/ru/top100/";

private ArrayList<String> imgUrls;
private ArrayList<String> names;
private ArrayList<Button> buttons;

private int numberoOfQuestions;
private int numberOfRightAnswer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    photoStar = (ImageView) findViewById(R.id.photoStar);
    btn0 = (Button) findViewById(R.id.btn0);
    btn1 = (Button) findViewById(R.id.btn1);
    btn2 = (Button) findViewById(R.id.btn2);
    btn3 = (Button) findViewById(R.id.btn3);

    imgUrls = new ArrayList<>();
    names = new ArrayList<>();
    buttons = new ArrayList<>();
    buttons.add(btn0);
    buttons.add(btn1);
    buttons.add(btn2);
    buttons.add(btn3);

    getContent();
    game();
}
private void getContent(){
    DownloadContent downloadContent = new DownloadContent();
    try {
        String content = downloadContent.execute(url).get();
        String start = "<article class=\"top1-person\">"; // cтрока с которой начинаем
        String finish = "</article><div style=\"margin: 1em 0 2em;\">"; // cтрока на которой закончим

        Pattern pattern = Pattern.compile(start + "(.*?)" + finish);
        Matcher matcher = pattern.matcher(content);

        String newContent = "";
        while (matcher.find()){
            newContent = matcher.group(1);
        }

        Pattern patternImg = pattern.compile("background-image: url( (.*?) );" );
        Pattern patternName = pattern.compile("target=\"_blank\"> (.*?) </a>");
        Matcher matcherImg = patternImg.matcher(newContent);
        Matcher matcherName = patternName.matcher(newContent);
        while (matcherImg.find()){
            imgUrls.add(matcherImg.group(1));
        }
        while (matcherName.find()){
            names.add(matcherName.group(1));
        }
        for(String s:imgUrls){
            Log.i("MyResult", s);
        }
      //  Log.i("MyResult", newContent);
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
private void game (){
    generateQuestions();
    DownloadPhoto task = new DownloadPhoto();
    try {
        Bitmap bitmap = task.execute(imgUrls.get(numberoOfQuestions)).get();
        if(bitmap != null){
            photoStar.setImageBitmap(bitmap);
            for (int i = 0; i<buttons.size(); i++){
                if(i == numberOfRightAnswer){
                    buttons.get(i).setText(names.get(numberoOfQuestions));
                } else {
                    int wrongAnswer = generateWrongAnswer();
                    buttons.get(i).setText(names.get(wrongAnswer));
                }
            }
        }
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
private void generateQuestions (){
    numberoOfQuestions = (int) ( Math.random() * names.size() );
    numberOfRightAnswer = (int) ( Math.random() * buttons.size() );
}
private int generateWrongAnswer (){
    return (int) ( Math.random() * names.size() ) ;
}

private static class DownloadPhoto extends AsyncTask<String,Void, Bitmap>{

    @Override
    protected Bitmap doInBackground(String... strings) {
        URL url = null;
        HttpURLConnection httpURLConnection = null;
        StringBuilder resultContent = new StringBuilder();
        try {
            url = new URL(strings[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            return bitmap;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (httpURLConnection != null){
                httpURLConnection.disconnect();
            }
        }
        return null;
    }
}

private static class DownloadContent extends AsyncTask<String,Void,String>{

    @Override
    protected String doInBackground(String... strings) {
        URL url = null;
        HttpURLConnection httpURLConnection = null;
        StringBuilder resultContent = new StringBuilder();
        try {
            url = new URL(strings[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader reader = new BufferedReader(inputStreamReader);
            String line = reader.readLine();
            while (line != null){
                resultContent.append(line);
                line = reader.readLine();
            }
            return resultContent.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (httpURLConnection != null){
                httpURLConnection.disconnect();
            }
        }
        return null;
    }
}

}

Вот логи

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.guessstar, PID: 23810
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.guessstar/com.example.guessstar.MainActivity}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2511)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2571)
    at android.app.ActivityThread.access$900(ActivityThread.java:165)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1409)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:171)
    at android.app.ActivityThread.main(ActivityThread.java:5620)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
 Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    at java.util.ArrayList.get(ArrayList.java:308)
    at com.example.guessstar.MainActivity.game(MainActivity.java:99)
    at com.example.guessstar.MainActivity.onCreate(MainActivity.java:58)
    at android.app.Activity.performCreate(Activity.java:6320)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1121)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)

Ответы (0 шт):