图片接口回调的MainActivity

Util

public interface Callback {
   void loadImageSuccess(String imageUrl, Bitmap bitmap);
}

public static void loadBitmap(final String imageUrl, final Callback callback) {
    new AsyncTask<String, Void, Bitmap>(){

        @Override
        protected Bitmap doInBackground(String... strings) {
            return NeUtl.loadBitmap(strings[0]);
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            callback.loadImageSuccess(imageUrl, bitmap);
        }
    }.execute(imageUrl);
}

public static void loadBitmap(String imageUrl, final ImageView imageView) {
    new AsyncTask<String, Void, Bitmap>(){

        @Override
        protected Bitmap doInBackground(String... strings) {
            return NeUtl.loadBitmap(strings[0]);
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            imageView.setImageBitmap(bitmap);
        }
    }.execute(imageUrl);
}

public static Bitmap loadBitmap(String imageUrl) {
    Bitmap result = null;
    try {
            URL url = new URL(imageUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

            urlConnection.setReadTimeout(5000);
            urlConnection.setConnectTimeout(5000);
            urlConnection.setRequestMethod("GET");

            int responseCode = urlConnection.getResponseCode();

            if(responseCode == 200) {
                //通过factory将流解码成bitmap
                result = BitmapFactory.decodeStream(urlConnection.getInputStream());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
            return result;

}

Adapter

 private List<UserBean.DataBean>mlist;
        private Context context;

    public MyBaseAdapter(Context context) {
        this.context = context;
        mlist = new ArrayList<>();
    }
    public void setListData(List<UserBean.DataBean> list){
        this.mlist = list;
        notifyDataSetChanged();
    }

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

    public void delData(int position) {
        mlist.remove(position);
        notifyDataSetChanged();
    }

    @Override
    public UserBean.DataBean getItem(int position) {
        return mlist.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHoder viewHoder;
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
            viewHoder = new ViewHoder();
            viewHoder.textViewBT = convertView.findViewById(R.id.itemBt);
            viewHoder.textViewNR = convertView.findViewById(R.id.itemNR);
            viewHoder.icon = convertView.findViewById(R.id.icon);
            convertView.setTag(viewHoder);
        }else{
            viewHoder = (ViewHoder) convertView.getTag();
    }
        viewHoder.textViewBT.setText(getItem(position).getNews_title());

        viewHoder.textViewNR.setText(getItem(position).getNews_summary());

        //主线程
        /*new AsyncTask<String, Void, Bitmap>(){
            @Override
            protected Bitmap doInBackground(String... strings) {
                return NeUtl.loadBitmap(strings[0]);
            }

            @Override
            protected void onPostExecute(Bitmap bitmap) {
                viewHoder.icon.setImageBitmap(bitmap);
            }
        }.execute(getItem(position).getPic_url());*/

        //给icon显示图片
        //NeUtl.loadBitmap(getItem(position).getPic_url(), viewHoder.icon);

        //会产生错乱
        //判断,解决错乱     根据url
        //先将imageview 和urlbangd

        // 每次都绑定最新的url到icon
        viewHoder.icon.setTag(getItem(position).getPic_url());

        viewHoder.icon.setImageResource(R.mipmap.ic_launcher);
        //但加载完成,判断当前加载图片的url是否和绑定的一样
        NeUtl.loadBitmap(getItem(position).getPic_url(), new NeUtl.Callback() {
            @Override
            public void loadImageSuccess(String imageUrl, Bitmap bitmap) {
                if(viewHoder.icon.getTag().equals(imageUrl)) {
                    viewHoder.icon.setImageBitmap(bitmap);
                } else {
                    Log.i("TEST", "加载: " + imageUrl + "完成, 当前需要显示的是: " + viewHoder.icon.getTag());
                }
            }
        });

        //NeUtl.loadBitmap(getItem(position).getPic_url(), viewHoder.icon);
        return convertView;
    }
class ViewHoder{
        TextView textViewBT ,textViewNR;
        ImageView icon;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值