Я пытаюсь сделать HttpClient POST для отправки каждого элемента ArrayList один за другим на сервер. Вот некоторые фрагменты моих кодов:
ArrayList<String> testArrayList = new ArrayList<>();
testArrayList.add("Item 1");
testArrayList.add("Item 2");
final Iterator<String> iterator = testArrayList.iterator();
while(iterator.hasNext()){
for(int i = 0; i<testArrayList.size(); i++){
currentContent += "| " + testArrayList.get(i) + " | ";
}
currentItem = iterator.next();
final String url = "some url here"
RequestParams params = new RequestParams();
params.add("item_name", currentItem);
new AsyncHttpClient().post(url, params, new AsyncHttpResponseHandler( {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Toast.makeText(context, "Removing..", Toast.LENGTH_SHORT).show();
iterator.remove();
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
}
Проблема в iterator.remove()
всегда вызовет исключение IllegalStateException. Это не происходит, если AsyncHttpClient не участвует. Что я пробовал:
- Я пытался поместить
iterator.next()
в onSuccess()
(в этом случае не добавлено RequestParams
, просто чтобы попробовать), но это
приложение зависает и не отвечает. (В моем случае я на самом деле
хотел бы оставить его снаружи onSuccess()
, потому что из итератора
где я найду свой RequestParams
)
- Я искал похожие вопросы. Большинство проблем вызвано тем, что вы не позвонили
iterator.next()
до iterator.remove()
. У меня есть, но мой код все еще не работает. Другой частой причиной было бы то, что iterator.remove()
вызывается во внутреннем цикле, но это не мой случай.
Я застрял в этой проблеме несколько недель. Пожалуйста, помогите мне.