AsyncTask в цикле
Добавлено: 10 ноя 2013, 09:17
Привет всем.
В методе onCreate есть следующий код:
В кратце расскажу что здесь происходит.
Необходимо динамически создать компоненты из json'а.
Отправляю запрос на сервер - сервер возвращает мне ответ в формате json.
Пробегаюсь по строке и ищу компоненты, которые мне нужны.
Если нашел текствью - создал без проблем.
Если нашел едиттекст - создал создал без проблем.
Но для того, чтобы создать spinner нужно отправить дополнительный запрос на сервер.
Поэтому я создал внутренний класс, который делает это.
Но проблема в том, что компоненты должны быть созданы в таком же виде, в каком они описаны в json.
Код, приведенный выше работает, но spinner'ы создаются в самом конце активити.
Это в принципе логично, вызвал new CreateSpinner(value, i ,s).execute() - поток начал выполнятся, а цикл идет дальше, пока завершится поток - цикл уже пройдет несколько итераций.
Так вот, в чем вопрос: возможно ли сделать так, чтобы цикл не продолжался, пока поток не завершится?
Спасибо.
В методе onCreate есть следующий код:
Код: Выделить всё
new Get("http://site.ru") {
@Override
protected void onPostExecute(String s) {
Gson g = new Gson();
Value value = g.fromJson(s, Value.class);
for (int i = 0; i < value.properties.length; i++) {
String text = value.properties[i].type;
if (text.equals("textview")) {
CreateTextView(value, i, true);
}
if (text.equals("edittext")) {
CreateEditText(value, i, s);
}
if (text.equals("spinner")) {
CreateTextView(value, i, false);
new CreateSpinner(value, i ,s).execute(); // вот тут возникает проблема
}
}
}
}.execute("");Необходимо динамически создать компоненты из json'а.
Отправляю запрос на сервер - сервер возвращает мне ответ в формате json.
Пробегаюсь по строке и ищу компоненты, которые мне нужны.
Если нашел текствью - создал без проблем.
Если нашел едиттекст - создал создал без проблем.
Но для того, чтобы создать spinner нужно отправить дополнительный запрос на сервер.
Поэтому я создал внутренний класс, который делает это.
Но проблема в том, что компоненты должны быть созданы в таком же виде, в каком они описаны в json.
Код, приведенный выше работает, но spinner'ы создаются в самом конце активити.
Это в принципе логично, вызвал new CreateSpinner(value, i ,s).execute() - поток начал выполнятся, а цикл идет дальше, пока завершится поток - цикл уже пройдет несколько итераций.
Так вот, в чем вопрос: возможно ли сделать так, чтобы цикл не продолжался, пока поток не завершится?
Спасибо.