Pracuję nad aplikacją na Androida, która pobiera obraz z Internetu i wyświetla w interfejsie użytkownika. Używam RecyclerView do wyświetlania obrazu. Planuję pobrać obraz przy użyciu osobnego wątku. i aktualizuj RecyclerView za pomocą handler'a. Nie wiem, pogoda ta koncepcja jest poprawna czy nie, (wiem AsyncTask, ale za cel uczenie Próbuję zaimplementować Handler.) Więc kodowana takie same jak poniżejUżyj programu obsługi do publikowania w wątku interfejsu użytkownika
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();
}
Mam realizowane to kod, ale dostaję błąd, a aplikacja zostaje zakończona, nie wiem, dlaczego tak się dzieje. proszę, pomóż mi rozwiązać ten problem. i wyjaśnij, jaki jest problem z bieżącym kodem.
(proszę nie sugerować użycie AsyncTask (Próbowałem to i to działa dobrze))
UPDATE
Błąd pobierania: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
prosimy odświeżyć Qn – droidev