Метод OnPostExecute AsyncTask получает те же параметры - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть класс CardsParser , который анализирует веб-страницу и возвращает ArrayList с объектами WordCard. Затем объекты отображаются в TextView.

Первый запрос всегда в порядке. Но потом я получаю тот же результат, что и в первый раз. Мой TextView очищается, запускается новый запрос, и я всегда получаю объекты из первого ArrayList.

Я обнаружил, что метод onPostExecute всегда получает тот же ArrayList, что и параметр, но я не знаю почему, потому что каждый раз я создаю новый CardsParser, а метод doInBackground получает правильный параметры.

Заранее спасибо.

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

EditText editText;
Button srchBtn;
TextView foundWords;
CardsParser cardsParser;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editText = findViewById(R.id.editText);
    srchBtn = findViewById(R.id.srchBtn);
    srchBtn.setOnClickListener(this);
    foundWords = findViewById(R.id.foundWords);
    foundWords.setMovementMethod(new ScrollingMovementMethod());
}

private class AsyncRequest extends AsyncTask<String, Void, ArrayList<WordCard>> {
    @Override
    protected ArrayList<WordCard> doInBackground(String... args) {
        cardsParser = new CardsParser();
        return cardsParser.parse(editText.getText().toString());
    }

    @Override
    protected void onPostExecute(ArrayList<WordCard> cards) {
        for (WordCard card : cards) {
            foundWords.append(card.word);
            foundWords.append("\n");
        }
    }
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.srchBtn:
            foundWords.setText("");
            new AsyncRequest().execute();
            break;
    }
}

1 Ответ

0 голосов
/ 02 сентября 2018

Я нашел ошибку. Класс CardsParser каждый раз генерирует один и тот же URL, и поэтому он не работает должным образом.

...