Использовать обработчик для публикации в теме пользовательского интерфейса

Я работаю над приложением для Android, которое загружает изображение из Интернета и отображает его в пользовательском интерфейсе. Я использую RecyclerView для показа изображения. Я планирую скачать изображение, используя отдельную ветку. и обновите RecyclerView через обработчик. Я не знаю, является ли эта концепция правильной или нет, (я знаю AsyncTask, но для целей обучения я пытаюсь реализовать Handler.) Так что я написал то же самое, что и ниже

private void loadNewsThumbnailImage(ArrayList<DataItem> dataList) {
    for (DataItem item : DataList) { //DataItem is the model class
        loadThumbnailFromInternet(item);
        }
}



private void loadThumbnailFromInternet(final DataItem dataItem) {

        Thread imageDowloaderThread = new Thread(new Runnable() {
            @Override
            public void run() {
                Bitmap bitmap = null;
                try {
                    bitmap = getDataItemBitmap(dataItem.getmImageUrl());
                    dataItem.setmThumbnail(bitmap);
                    new Handler().post(new Runnable() { // Tried new Handler(Looper.myLopper()) also
                        @Override
                        public void run() {
                            mAdapter.notifyDataSetChanged();
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        imageDowloaderThread.start();

    }

Я выполнил этот код, но получаю ошибку, и приложение закрывается, я не знаю, почему это происходит. пожалуйста, помогите мне разобраться. и объясните, в чем проблема текущего кода.

(Пожалуйста, не предлагайте использовать AsyncTask (я пробовал это, и он отлично работает))

ОБНОВЛЕНИЕ

Ошибка при получении: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

9
задан droidev 5 August 2015 в 06:10
поделиться