listView加载图片

来源:互联网 发布:网络主播收入来源 编辑:程序博客网 时间:2024/06/05 20:54
public class MusicAdapter extends BaseAdapter implements AbsListView.OnScrollListener{    private List<Music> musicList;    private LayoutInflater mInflater;    private ImageLoader mImageLoader;    private int mStart, mEnd;    public static  String[] URLS;    private boolean mFirstIn;    public MusicAdapter(Context context, List<Music> data, ListView listView){        musicList = data;        mInflater = LayoutInflater.from(context);        URLS = new String[data.size()];        mImageLoader = new ImageLoader(listView);        for (int i=0; i<data.size(); i++){            URLS[i] = data.get(i).getMusicIcon();        }        mFirstIn = true;        listView.setOnScrollListener(this);    }    @Override    public int getCount() {        return musicList.size();    }    @Override    public Object getItem(int position) {        return musicList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder = null;        if (convertView == null){            viewHolder = new ViewHolder();            convertView = mInflater.inflate(R.layout.item_net_music, null);            viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.iv_icon);            viewHolder.tvName = (TextView) convertView.findViewById(R.id.tv_name);            viewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_content);            convertView.setTag(viewHolder);        }else{            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.ivIcon.setImageResource(R.mipmap.ic_launcher);        String iconUrl = musicList.get(position).getMusicIcon();        viewHolder.ivIcon.setTag(iconUrl);        /**         * 使用多线程方式异步加载图片         */        //new ImageLoader().showImageByThread(viewHolder.ivIcon, iconUrl);        /**         * 使用AsyncTask异步加载图片         */        mImageLoader.showImageByAsyncTask(viewHolder.ivIcon, iconUrl);        viewHolder.tvName.setText(musicList.get(position).getTitle());        viewHolder.tvContent.setText(musicList.get(position).getArtist());        return convertView;    }    class ViewHolder{        public TextView tvName, tvContent;        public ImageView ivIcon;    }    //ListView 状态切换的时候才会调用    @Override    public void onScrollStateChanged(AbsListView view, int scrollState) {        if (scrollState == SCROLL_STATE_IDLE){            //处于停止状态,加载可见项            mImageLoader.loadImages(mStart, mEnd);        }else{            //处于其他状态,停止加载            mImageLoader.cancelAllTasks();        }    }    //在整个滑动的过程中都会调用    @Override    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {        mStart = firstVisibleItem;        mEnd = firstVisibleItem + visibleItemCount;        //第一次显示时调用        if (mFirstIn && visibleItemCount>0){            mImageLoader.loadImages(mStart, mEnd);            mFirstIn = false;        }    }}
0 0
原创粉丝点击