我有一个适配器类,用于显示缩略图列表。当用户单击缩略图时,它会从URL中检索图像,并花费大约一秒钟的时间,并将其显示在对话框片段中。由于延迟,我希望有个吐司说“获取图像”。但是,直到对话框片段显示时,烤面包才会出现,这毫无意义。
在通话之前和之后,我都尝试移动烤面包片,以制作一个对话框片段,结果仍然相同。我尝试过使用AsyncTask先同步Toast,然后再同步对话框片段,但结果仍然相同。
适配器类:
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中调用方法的通用接口。这个应用程式有一个活动,有多个片段。