У меня есть класс адаптера, который обрабатывает отображение списка миниатюр изображений.Когда пользователь нажимает на миниатюру, он извлекает изображение из URL и занимает около секунды, и отображает его в фрагменте диалога.Из-за задержки я хочу, чтобы там был тост с надписью «выбор изображения».Однако тост не появляется до тех пор, пока не отобразится фрагмент диалога, что бессмысленно.
Я попытался переместить тост до и после вызова, чтобы создать фрагмент диалога и все тот же результат.Я попытался с помощью AsyncTask сначала синхронизировать тост, а затем фрагмент диалога, но результат тот же.
Класс адаптера:
holder.viewThumbnail.setOnClickListener(v ->
{
FetchImage fetchImage = new FetchImage(MainActivity.mainActivity, rootView, position);
fetchImage.execute();
});
Класс FetchImage:
protected final Void doInBackground(WeakReference<Activity>... params)
{
if(MainActivity.animalList.get(position).getImage() == null)
{
MainActivity mainActivity = weakReferenceActivity.get();
if(mainActivity != null)
{
new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(mainActivity, mainActivity.getString(R.string.fetching_image), Toast.LENGTH_SHORT).show());
}
}
return null;
}
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
MainActivity mainActivity = weakReferenceActivity.get();
if(mainActivity != null)
{
mainActivity.dialogShow(view, C.NO, C.DIALOG_IMAGE, "", "", position);
}
}
Я также просто попытался сделать это в классе адаптера без маршрута AsyncTask:
Класс адаптера:
holder.viewThumbnail.setOnClickListener(v ->
{
if(MainActivity.animalList.get(position).getImage() == null)
interfaceCommon.makeToast("fetching data", 1);
interfaceCommon.dialogShow(rootView, C.NO, C.DIALOG_IMAGE, "", "", position);
});
interfaceCommon - это просто общий интерфейс для вызова методов в Main Activity.У меня есть одно действие для этого приложения и несколько фрагментов.