Обновление 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();
    }
}
Другие вопросы по тегам