Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – Picasso和适配器与viewHolder大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我和毕加索一起工作有问题.我无法从Target类访问viewHolder.保存下载的图片时出现问题.有人可以帮帮我????请.

这是适配器的代码

   public AsanasAdapter(List<Asana> asanaList, Context mContext){

        this.mContext = mContext;
        this.asanaList = asanaList;
        this.layoutInflater = (LayoutInflater) mContext.getSystemservice(Context.LAYOUT_INFLATER_serviCE);
    }



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

    @Override
    public Asana getItem(int position) {
        return asanaList.get(position);
    }

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

         ViewHolder viewHolder =null;


        if(convertView==null){

            viewHolder = new ViewHolder();
            convertView = layoutInflater.inflate(R.layout.asanas_item, null);
            viewHolder.asanaName = (TextView) convertView.findViewById(R.id.asana_Name);
            viewHolder.asanaDesc = (TextView) convertView.findViewById(R.id.asana_desc);
            viewHolder.asanaImg = (ImageView) convertView.findViewById(R.id.asana_img);
            convertView.setTag(viewHolder);

        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        String name = getItem(position).getName();
        String desc = getItem(position).getDescShort();

        viewHolder.asanaDesc.setText(desc);
        viewHolder.asanaName.setText(Name);

        final File imgFile = new File(Environment.getDataDirectory()+"/"+getItem(position).getId()+".png");

        if(imgFile.exists()){

            Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

            viewHolder.asanaImg.setImageBitmap(myBitmap);

        }
        else if (isNetworkConnected()) {

            Log.d("MYLOGGGGGGGG", MYurl.bASE_URL + "/" + getItem(position).getImgThumb() + "");
            final ViewHolder finalViewHolder = viewHolder;
            PiCasso.with(mContext)
                    .load(MYurl.bASE_URL + "/" + getItem(position).getImgThumb())
                    .into(new Target() {
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {
                            viewHolder
                            File fPath = Environment.getDataDirectory();
                            File file = new File(fPath, getItem(position)+".png");
                            if (!file.exists()) {
                                try {
                                    file.mkdirs();
                                    file.createNewFile();
                                } catch (IOException E) {
                                    e.printStackTrace();
                                }
                            }

                            FiLeoutputStream out = null;
                            try{
                                out = new FiLeoutputStream(filE);
                                bitmap.compress(Bitmap.CompressFormat.PNG,100,out);
                            }
                            catch (Exception E){
                                e.printStackTrace();
                            }
                            finally {
                                try{
                                    if (out != null){
                                        out.close();
                                    }
                                }
                                catch (IOException E){
                                    e.printStackTrace();
                                }
                            }
                        }

                        @Override
                        public void onBitmapFailed(Drawable errorDrawablE) {

                        }

                        @Override
                        public void onPrepareLoad(Drawable placeHolderDrawablE) {

                        }
                    });

        }
        else{
         //   viewHolder.asanaImg.setImageBitmap();


        }


        return convertView;
    }



    public Boolean isNetworkConnected() {
        Connectivitymanager cm = (Connectivitymanager) mContext.getSystemservice(Context.CONNECTIVITY_serviCE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            // There are no active networks.
            return false;
        } else
            return true;
    }

    static class ViewHolder {
        ImageView asanaImg;
        TextView asanaName;
        TextView asanaDesc;


    }



}

解决方法:

这里创建一个实现Target的新类,如:

public class myTarget implements Target {
ViewHolder holder;
public myTarget(ViewHolder holder){
    this.holder = holder;
}

@Override
public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {

}

@Override
public void onBitmapFailed(Drawable errorDrawablE) {

}

@Override
public void onPrepareLoad(Drawable placeHolderDrawablE) {

}

}

并在您的代码中使用它,如:

 myTarget target = new myTarget(viewHolder) {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {
            //Use ViewHolder here
            File fPath = Environment.getDataDirectory();
            File file = new File(fPath, getItem(position)+".png");
            if (!file.exists()) {
                try {
                    file.mkdirs();
                    file.createNewFile();
                } catch (IOException E) {
                    e.printStackTrace();
                }
            }

            FiLeoutputStream out = null;
            try{
                out = new FiLeoutputStream(filE);
                bitmap.compress(Bitmap.CompressFormat.PNG,100,out);
            }
            catch (Exception E){
                e.printStackTrace();
            }
            finally {
                try{
                    if (out != null){
                        out.close();
                    }
                }
                catch (IOException E){
                    e.printStackTrace();
                }
            }
        }
    };
    PiCasso.with(mContext)
            .load(MYurl.bASE_URL + "/" + getItem(position).getImgThumb())
            .into(target);

大佬总结

以上是大佬教程为你收集整理的android – Picasso和适配器与viewHolder全部内容,希望文章能够帮你解决android – Picasso和适配器与viewHolder所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: