У меня есть класс 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;
}
}