只创建聊天应用程序。在聊天窗口中,我收到消息后通知了数组适配器(聊天列表视图)。到目前为止工作正常,但现在我需要下载其他用户发送给当前用户的图像。此消息在消息文本中有“[attachment] = xxx.png”。在arrayadapter中,我检查messagetext是否包含[attachment] ..,然后检查附件是否已经下载/存在于本地存储中。如果没有,我在asynctask中下载附件(在适配器的getView中)。下载工作正常,但现在在onPostExecute下载任务,我想加载(下载)附件到convertview的imageview。我很清楚在asynctask完成之前已经返回了(已转换的)视图。我不太确定如何在转换视图中更新imageview /如何最好地处理通知适配器有关更改。
这是我的代码(来自ListView ArrayAdapter的getView):
if (!file.exists()){
AsyncTask_DownloadFile.DownloadFileTaskParams downloadFileTaskParams = new AsyncTask_DownloadFile.DownloadFileTaskParams(AppConfig.ATTACHMENT_URL, fileName, path, mContext);
new DownloadTask(mContext).execute(downloadFileTaskParams);
}
和AsyncTask onPostExecute:
@Override
protected void onPostExecute(String result) {
mWakeLock.release();
if (result == null) {
Toast.makeText(context, "Download error", Toast.LENGTH_LONG).show();
}
else {
final File file = new File(result);
//Toast.makeText(context, "File downloaded", Toast.LENGTH_SHORT).show();
final ImageView iv_image = (ImageView) mconvertView.findViewById(R.id.iv_attachment);
Glide.with(mContext)
.load(file)
.fitCenter()
.into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
iv_image.setImageDrawable(resource);
iv_image.setVisibility(View.VISIBLE);
iv_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, Activity_FullScreenImage.class);
intent.putExtra("srcType", AppConfig.GALLERY_SRC_LOCAL);
intent.putExtra("fileName", file);
intent.putExtra("ArticleImageArray", "");
intent.putExtra("position", 1);
intent.putExtra("fullScreenLabel", "Label");
intent.putExtra("chatPartnerId", chatPartnerId);
mContext.startActivity(intent);
}
});
}
});
}
}
}