ListView ArrayAdapters中的Asynctask getView / updates(已转换)View

时间:2017-02-18 16:18:59

标签: android listview android-asynctask adapter

只创建聊天应用程序。在聊天窗口中,我收到消息后通知了数组适配器(聊天列表视图)。到目前为止工作正常,但现在我需要下载其他用户发送给当前用户的图像。此消息在消息文本中有“[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);

                                    }
                                });

                            }
                        });



            }
        }
    }

0 个答案:

没有答案