Почему вы делаете genrecode=new String[entries];
и genrename=new String[entries];
внутри цикла? Это создает новый строковый массив каждый раз в цикле, аннулируя предыдущие назначения.
Попробуйте вместо этого:
genrecode=new String[entries];
genrename=new String[entries];
for(int i = 0; i < entries; i++) {
JSONObject jo_genre = (JSONObject) ja_genres.get(i);
JSONArray ja_genre=jo_genre.getJSONArray("genre");
JSONObject genreinfo = (JSONObject) ja_genre.get(0);
genrecode[i]= genreinfo.getString("code");
genrename[i] = genreinfo.getString("name");
System.out.println(genrecode[i]);
System.out.println(genrename[i]);
}
Он создает достаточно большой массив заранее и заполняет все элементы массива. Я также изменил начальное значение для i
в приведенном выше коде, потому что индексы массива обычно начинаются с нуля, а не с одного. Вы можете проверить это.
И последнее, на что стоит обратить внимание - это статика. Если ваш класс когда-либо выделен как несколько экземпляров, в этом случае они могут перезаписать данные друг друга (особенно в многопоточной программе, где вы не можете легко определять последовательность). Сделав их частными для экземпляра, вы предотвратите это.
Опять же, это зависит от того, как вы используете класс. Если это синглтон, это не имеет значения (пока), но я склонен планировать заранее - вы не знаете, когда захотите изменить его на не-синглтон, и вы ничего не потеряете (на мой взгляд), используя переменные экземпляра даже для одного.