AsyncTask return null при повторном запросе

193
11 октября 2018, 16:10

есть задача загрузить загрузить данные с api, обработать и передать список в mainActivity. Первый раз когда загружаю данные все работает отлично - при втором запуске asyncTask постоянно возвращает null. Поток срабатывает (в doinBackground генерирует новые данные, но не отправляет их в активити), как это исправить?

@Override
public void onClick(View v) {
    try {
        switch (v.getId()){
            case R.id.btnStartSearch:
                String query_str = etSearch.getText().toString();
                if(!query_str.isEmpty()){
                    List<ContactItem> list = new ArrayList<>();
                    LoadAPI loadAPI = new LoadAPI();
                    loadAPI.execute(query_str);
                    list = loadAPI.get();
                    if(list == null){ Toast.makeText(this, "Введіть 
 коректніші дані пошуку!", Toast.LENGTH_SHORT).show(); }
                    else {
                        initRecycler(list);
                        Log.println(Log.INFO, "api", "list size - " + 
 list.size());
                    }
                    //loadAPI.cancel(true);
                    //loadAPI.execute("close", loadAPI.toString());
                    //loadAPI.execute();
                }
                else {
                    Toast.makeText(this, "Помилка! Введіть данні пошуку!", 
 Toast.LENGTH_SHORT).show();
                }
                break;
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }
}

вот код потока

public class LoadAPI extends AsyncTask<String, Void, List<ContactItem>> {
private List<ContactItem> contactItemList;
@Override
protected List<ContactItem> doInBackground(String... strings) {
    try {
        String query = URLEncoder.encode(strings[0], "UTF-8");
        String link_query = "https://public-api.nazk.gov.ua/v1/declaration/? 
q=" + query;
        Log.println(Log.INFO, "api", link_query);
        Document document = 
Jsoup.connect(link_query).ignoreContentType(true).get();
        String result = document.text();
        //dell
        Log.println(Log.INFO, "api", result);
        JSONObject jsonObject = new JSONObject(result);
        JSONArray arrayTovars = jsonObject.getJSONArray("items");
        int count = jsonObject.getJSONObject("page").getInt("totalItems");
        if (count < 500) {
            contactItemList = new ArrayList<>();
            Log.println(Log.INFO, "api", "count: " + count);
            for (int i = 0; i < arrayTovars.length(); i++) {
                ContactItem contact = new ContactItem();
                JSONObject item = arrayTovars.getJSONObject(i);
                contact.setId(item.getString("id"));
                contact.setFirst_name(item.getString("firstname"));
                contact.setLast_name(item.getString("lastname"));
                contact.setMisce_rob(item.getString("placeOfWork"));
                contact.setPosada(item.getString("position"));
                contact.setLink_pdf(item.getString("linkPDF"));
                contact.setLink_pdf(item.getString("linkPDF"));
                contactItemList.add(contact);
            }
        }
        else {
            return null;
        }
        //String res = contactItemList.get(0).getLast_name() + " " + 
 contactItemList.get(0).getFirst_name();
        //Log.println(Log.INFO, "api", res);
        return contactItemList;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}
@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}
@Override
protected void onPreExecute() {
    super.onPreExecute();
}
@Override
protected void onPostExecute(List<ContactItem> list) {
    super.onPostExecute(list);
}
}

Спасибо огромное за помощь заранее

READ ALSO
Чат client-server на java

Чат client-server на java

У меня есть простенький чат написанный на javaСервер для него я запустил на линуксе, а клиент подключается с компьютера на windows

213
Микросервисная архитектура, SpringBoot, Zuul

Микросервисная архитектура, SpringBoot, Zuul

Помогите понять как это должно выглядеть и работатьУ меня есть gateway и есть сервис который занимается бизнес логикой (для примера хватит одного,...

169
Не конфигурируется Hibernate

Не конфигурируется Hibernate

Весь день уже мучаюсь, не знаю что делать

213
SpringBoot Single Page Application

SpringBoot Single Page Application

Начал делать приложение и пытаюсь сделать single page applicationДля этого я создал один маппинг на "/":

180