Я работаю над приложением для 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()