Все я функционирует правильно подбирая только стоимость array, но подобрав данные двух, которые то, что я хочу, мне не хватает данных, как я могу делать это, чтобы иметь их в том же activity:
@Override
protected String doInBackground(String... url) {
urlPost = url[0];
try {
jsonObjectDesignPosts = JsonParser.readJsonFromUrl(urlPost);
postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
jsonArrayDesignContent = jsonObjectDesignPosts.getJSONArray("golesLocal");
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
jsonArrayDesignContent = jsonObjectDesignPosts.getJSONArray("golesVisitante");
sharedPreferences.edit().putString("DESIGN", jsonArrayDesignContent.toString()).apply();
designNombre_local = new String[postNumber];
designMinuto_local = new String[postNumber];
designNombre_visitante = new String[postNumber];
designMinuto_visitante = new String[postNumber];
for (int i = 0; i < postNumber; i++) {
designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();
}
} catch (IOException | JSONException e) {
e.printStackTrace();
designNombre_local = new String[0];
error = true;
}
return null;
}
@Override
protected void onPostExecute(String result) {
designs = new ArrayList<>();
if (designNombre_local.length != -1) {
for(int i=0; i<(designNombre_local.length); i++){
designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
designNombre_visitante[i],designMinuto_visitante[i]));
}
}
if (error) {
Toast.makeText(getActivity(), "Error de conexión", Toast.LENGTH_LONG).show();
}
Я догадался, что он показывает нижнее число статей, объясняюсь, в партии пометили помещения 5 и посетители 3, так как он показывает только три результата каждой команды. Из чего он проистекает?
В dimensionar вся стоимость ты получишь от твоего array этих считая, что postNumber
у него есть та же стоимость для помещения и посетитель, aunqúe golesLocal
они были в конце концов этими более или менее беря стоимость golesVisitante
:
postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
Проблема происходит здесь:
for (int i = 0; i < postNumber; i++) {
designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();
}
даже у тебя могла бы быть ошибка:
ArrayIndexOutOfBoundsException
Как решение, было бы нужно брать стоимость postNumber
golesLocal
и другой postNumber
для golesVisitante
, это для dimensionar правильное получение стоимости, примера:
//Obtiene valores Local.
postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
for (int i = 0; i < postNumber; i++) {
designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
}
//Obtiene valores Visitante.
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
for (int i = 0; i < postNumber; i++) {
designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();
}
Проблему создала эта здесь postNumber
в этом изменчивом ассигновании / переассигновании.
pseudo code:
//..
//se marcan 5 goles
postNumber = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
//ahora se marcan 3
postNumber = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
и сейчас здесь все те показывают себе->
for (int i = 0; i < postNumber; i++) {
designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("nombre")).toString();
designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal").getJSONObject(i).getString("minuto")).toString();
designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("nombre")).toString();
designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante").getJSONObject(i).getString("minuto")).toString();
}
последнюю стоимость, которую я распределяю ему, что его 3 например. (только он повторит 3 раза поэтому в этом случае тебе не хватает голов команды)
Ждал пойми меня, ты можешь решать это многих способов, если ошибка - тот, что я показываю тебе (я это не смог testear), ты мог бы создавать две переменные postNumberLocal
и postNumberVisitiante
и они повторять из-за separadao костлявая один for
например для каждого varariable, но только это идея.
for (int i = 0; i < postNumberLocal; i++) {
designNombre_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal")
.getJSONObject(i)
.getString("nombre")).toString();
designMinuto_local[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesLocal")
.getJSONObject(i)
.getString("minuto")).toString();
}
for (int i = 0; i < postNumberVisitiante; i++) {
designNombre_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante")
.getJSONObject(i)
.getString("nombre")).toString();
designMinuto_visitante[i] = Html.fromHtml(jsonObjectDesignPosts.getJSONArray("golesVisitante")
.getJSONObject(i)
.getString("minuto")).toString();
}
Сейчас мы налаживаем новые переменные
//..
//se marcan 5 goles
postNumberLocal = jsonObjectDesignPosts.getJSONArray("golesLocal").length();
//..
//ahora se marcan 3
postNumberVisitiante = jsonObjectDesignPosts.getJSONArray("golesVisitante").length();
//..
И также во время определения tamaГ±o arrays, что ты используешь что-либо подобное:
//..
..//
designNombre_local = new String[postNumberLocal];
designMinuto_local = new String[postNumberLocal];
designNombre_visitante = new String[postNumberVisitante];
designMinuto_visitante = new String[postNumberVisitante];
..//
Вы комментируете мне->
adetenido приложение, logcat: java.lang. ArrayIndexOutOfBoundsException: length=3; index=3
это происходит главным образом, потому что пробует соглашаться вне пределов array (в этом случае) простая иллюстрация:
Выглядите мне на тебя смоги думать, что он хорошо, но во многих языках индексированный - с 0, это означает, что он считает с 0.
para la longitud el indice maximo es
1 0
2 1
3 2
.
Имея в виду предыдущее Вы использует в каком-то моменте для longitud = 3
доступ к indice 3
array, как Вы можете видеть в предыдущей таблице максимум для 3, он 2, отсюда Ваша ошибка.
Сейчас, как решать это я не, где случается точно ошибка в простой вид основываясь на log, который он показывает, так как я не могу видеть aque линию, относится, но я думаю, что понимая предыдущее Вы можете спорить, где эта ошибка, (в выводе log, очень вероятно, что он показывает ему число, мы сказали 10 так как Вы dirije в линию десять из Вашего кода и поисков ошибка где-то здесь, это был бы простой способ находить ошибку).
, Но если я должен говорить, где я думаю, что он, ошибку, возможно, что он в этой части кода:
if (designNombre_local.length != -1) {
for(int i=0; i<(designNombre_local.length); i++){
designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
designNombre_visitante[i],designMinuto_visitante[i]));
}
более конкретно - эта линия:
designNombre_visitante [i], designMinuto_visitante [i]));
возможно, что tamaГ±o от designNombre_visitante
он отличается (больше pequeГ±o), что designNombre_local.length
отсюда следует, что в какой-то точке переменная i
попробовала соглашаться вне индекса array designNombre_visitante
это решать точно, ошибка быть этой, имея в виду каков - мотив ошибки, он был бы должен знать, что то, что Вы этот intendo делать с:
designs.add(new Goles(designNombre_local[i],designMinuto_local[i],
designNombre_visitante[i],designMinuto_visitante[i]));
, И которого способ он использован (обрабатывая информацию или налаживая это каким-то образом для того, чтобы не попробовало соглашаться на положение, не воспользованное array).
P.D: как заметь также я скажу ему, что Вы можете понимать, что designNombre_local.length, simpre он больше, что designNombre_visitante,
for(int i=0; i<(designNombre_local.length); i++){
, но не, если это Ваш intentecion, но не быть такими иметь это в виду, когда он сделает изменения, чтобы решать предыдущую ошибку.