Обновление ListView Textview vom Asyntask
Мне нужно обновить textView из моей асинхронной задачи. У меня есть специальный адаптер для просмотра списка, и я хочу иметь обратный отсчет для каждой записи. Я начну asynctask для каждой записи с моего адаптера. Как я могу обновлять текстовое представление каждую секунду из асинхронной задачи?
Спасибо за помощь:)
2 ответа
Если вы разместите свой код, я могу дать вам лучший ответ. Тем не менее, распространенным способом периодически обновлять представления является использование обработчиков.
private final Handler mHandler = new Handler(); //intialize in main thread
public void test() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mTextView.setText("hello");
}
}, 1000);
}
Вы можете сделать что-то вроде этого (это добавит запись в представление списка каждую секунду). Я использовал обычный ArrayAdapter для добавления строки. Вы можете использовать свой собственный адаптер, чтобы сделать что-то подобное. Метод publishProgress() в основном запускает метод onProgressUpdate(), который подключается к потоку пользовательского интерфейса и отображает добавляемые элементы.:
Класс AddStringTask расширяет AsyncTask {
@Override
protected Void doInBackground(Void... params) {
for(String item : items) {
publishProgress(item);
SystemClock.sleep(1000);
}
return null;
}
@Override
protected void onProgressUpdate(String... item) {
adapter.add(item[0]);
}
@Override
protected void onPostExecute(Void unused) {
Toast.makeText(getActivity(), "Done adding string item", Toast.LENGTH_SHORT).show();
}
}