Я работаю над приложением android, которое извлекает изображение из Интернета и отображается в пользовательском интерфейсе. Я использую RecyclerView для показа изображения. Я планирую загрузить изображение, используя отдельный поток. и обновить RecyclerView через обработчик. Я не знаю, кастрированный баран это понятие является правильным или нет, (я знаю AsyncTask, но для учебных целей я пытаюсь реализовать обработчик.) Я кодируются так же, как нижеИспользование обработчика для публикации в пользовательском интерфейсе
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 (я попробовал это, и это работает отлично))
UPDATE
Ошибка при получении: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
пожалуйста, обновите дп – droidev