У меня есть два массива json (cast, Crew), и я использую этот код, чтобы раздуть первый до моего HorizontalScrollView.
JSONArray casts = castImageResponse.getJSONArray("cast");
String image = null;
String name = null;
if (casts.length() > 0) {
for (int i = 0; i <= casts.length(); i++) {
JSONObject cast = casts.getJSONObject(i);
image = cast.getString("profile_path");
name = cast.getString("name");
View view = mInflater.inflate(R.layout.index_actors_gallery,mGallery, false);
ImageView img = view.findViewById(R.id.id_index_actors_image);
Picasso.get().load("https://image.tmdb.org/t/p/h632"+image).into(img);
TextView txt = view.findViewById(R.id.id_index_actors_name);
txt.setText(name);
mGallery.addView(view);
}
}
Когда я использую этот код для второго, он не работает, и работает только первый. Я думаю, мне нужно, чтобы второй метод запускался «только» после окончания первого. Как выполнить второй только после завершения первого?
Вы уверены, что второй JSON имеет ту же структуру, что и первый?
Вам не нужно ждать, пока первый файл будет проанализирован, цикл сделает это за вас. Возможно, Пикассо бежит сзади, но я так не думаю. Я согласен с @V.March, у вас второй JSON, возможно, имеет другую структуру. Опубликуйте свои массивы JSON, пожалуйста.
Да, я уверен, что второй JSON имеет ту же структуру, что и первый. Этот код работает, когда я вызываю их по отдельности, но когда я вызываю их обоих, работает только первый. это моя картинка jsonArray: ссылка на сайт
Попробуйте вложить с условием if
JSONArray casts = castImageResponse.getJSONArray("cast");
String image = null;
String name = null;
if (casts.length() > 0) {
for (int i = 0; i <= casts.length(); i++) {
JSONObject cast = casts.getJSONObject(i);
image = cast.getString("profile_path");
name = cast.getString("name");
View view = mInflater.inflate(R.layout.index_actors_gallery,mGallery, false);
ImageView img = view.findViewById(R.id.id_index_actors_image);
Picasso.get().load("https://image.tmdb.org/t/p/h632"+image).into(img);
TextView txt = view.findViewById(R.id.id_index_actors_name);
txt.setText(name);
mGallery.addView(view);
if (i==casts.length()){ //for starting only after the first one finishes
JSONArray crews = castImageResponse.getJSONArray("crew");
String image = null;
String name = null;
if (crews.length() > 0) {
for (int j = 0; j <= crews.length(); j++) {
//code for cast repeated in crews
JSONObject crews = casts.getJSONObject(i);
image = crews.getString("profile_path");
name = crews.getString("name");
View view = mInflater.inflate(R.layout.index_actors_gallery,mGallery, false);
ImageView img = view.findViewById(R.id.id_index_actors_image);
Picasso.get().load("https://image.tmdb.org/t/p/h632"+image).into(img);
TextView txt = view.findViewById(R.id.id_index_actors_name);
txt.setText(name);
mGallery.addView(view);
}
}
}
}
}
Спасибо всем, я только что поместил тему в отдельный try/coach и работает правильно.
опубликуйте свой ответ JSON, а также