画廊的自定义适配器中的 AsyncTask

cilies38

我想在我的自定义适配器 ImageAdapter 中使用异步任务来显示手机中的所有图像,因为 UI 线程上的消息工作太多。我尝试使用此代码(现在检索 gifview 的情况):适配器:

 public ImageAdapter(ArrayList<Media> liste, Context context) {
        this.listeImages = liste;
        mContext = context;
    }

    @Override
    public int getCount() {
        return listeImages.size();

    }

    @Override
    public Object getItem(int position) {
        return listeImages.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolderPic viewHolder= new ViewHolderPic();

        if (convertView == null) {
             convertView = lInflater.inflate(R.layout.imagegallery, null);
             viewHolder.imageView = (ImageView) 
convertView.findViewById(R.id.picGallery);
          //  viewHolder.gifView = (GifImageView) 
convertView.findViewById(R.id.gifG);
              convertView.setTag(viewHolder);
            } else {
                viewHolder =(ViewHolderPic) convertView.getTag();
            }

            viewHolder.filePic = new 
File(listeImages.get(position).getPath());
        PopulateGallery populate=new PopulateGallery();

            populate.execute(viewHolder);

            return convertView;
    }
}

异步任务:

类 PopulateGallery 扩展了 AsyncTask {

        ViewHolderPic viewHolder;
        Bitmap bitmap;


    @Override
    protected Boolean doInBackground(ViewHolderPic... params) {
         viewHolder=params[0];
        int widhtPic=(screenWidth/3)-6;
      //  if(!getExtensionFile(viewHolder.filePic).equals("image/gif")) {
           // viewHolder.gifView.setVisibility(View.GONE);
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = false;
            options.inPreferredConfig = Bitmap.Config.ARGB_4444;
            options.inDither = true;
           bitmap = decodeFile(viewHolder.filePic, widhtPic, (int) 
   getResources().getDimension(R.dimen.imageGallery_height));

        return true;
    }

    @Override
    public void onPostExecute(Boolean result){
        viewHolder.imageView.setImageBitmap(bitmap);
    }
}

但这是一团糟。有空格,图像大小不一样。有时我在 UI 线程中没有出现过 OutOfMemoryError。我尝试使用:

  try {
            populate.execute(viewHolder).get();
        } catch (InterruptedException e) {
            e.printStackTrace();
       } catch (ExecutionException e) {
           e.printStackTrace();
        }

但没有结果。我以为是因为在返回 convertView 之前任务没有完成,但问题仍然存在。我能做些什么来解决这个问题。谢谢。

沙劳丁·艾哈迈德·舒扎

您可以使用毕加索这是一个很好的库,可以处理与图像相关的任务,例如显示大图像、来自网络的图像或其他图像。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从自定义适配器调用 AsyncTask

来自分类Dev

AsyncTask在自定义适配器中不起作用

来自分类Dev

从asyncTask将数据传递到自定义适配器

来自分类Dev

将列表视图的数据从Asynctask传递到自定义列表适配器类

来自分类Dev

Asynctask中的基本适配器不起作用

来自分类Dev

片段中的自定义阵列适配器

来自分类Dev

如何在Android中自定义适配器?

来自分类Dev

在RecyclerView适配器中设置自定义字体

来自分类Dev

自定义适配器中的setOnItemClickListener

来自分类Dev

自定义视图的适配器中的NullPointerException

来自分类Dev

自定义适配器中的空指针异常

来自分类Dev

在自定义适配器中找不到ViewByID

来自分类Dev

自定义ListView适配器中的NullPointerException

来自分类Dev

自定义适配器的getview中的NullPointerException

来自分类Dev

getView()中的自定义适配器错误

来自分类Dev

在自定义适配器中遍历ListView

来自分类Dev

自定义绑定适配器中的通用lambda

来自分类Dev

自定义适配器getView中的IndexOutOfBounds异常

来自分类Dev

无法更新自定义适配器中的项目

来自分类Dev

自定义列表适配器中的 getApplicationContext()

来自分类Dev

自定义适配器中的意图

来自分类Dev

Fragment 中的自定义列表适配器

来自分类Dev

自定义适配器的问题

来自分类Dev

ListView的自定义适配器

来自分类Dev

自定义ListView的适配器

来自分类Dev

从AsyncTask在适配器内部的类强制转换异常

来自分类Dev

从AsyncTask在适配器内部的类强制转换异常

来自分类Dev

为使用asynctask的searchview创建基本适配器

来自分类Dev

在完成之前取消列表视图适配器的asynctask

Related 相关文章

热门标签

归档