1.adapter模板
public class NewsAdapter extends BaseAdapter implements OnScrollListener{
private List<NewsBean> mList;
private LayoutInflater mInflater; //转化一个layout布局作为我们的每一个item</span>
private ImageLoader mImageLoader;
private int mStart,mEnd;
public static String [] URLS;
private boolean mFirstIn;
public NewsAdapter(List<NewsBean> data,Context context,ListView listview) {//构造函数</span>
mList = data;
mInflater = LayoutInflater.from(context);</span>
mImageLoader = new ImageLoader(listview);
URLS = new String[data.size()];
for( int i = 0; i < data.size(); i++)
{
URLS[i] = data.get(i).getNewsIconUrl();
}
mFirstIn = true;
listview.setOnScrollListener(this);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null)
{holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_layout, null); //将layout转化为convertView,第二个参数为null,说明不指定父容器
holder.ivIcon = (ImageView) convertView.findViewById(R.id.iv_icon); //初始化viewHolder中已经定义好的元素</span>
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
holder.tvContent = (TextView) convertView.findViewById(R.id.tv_content);
convertView.setTag(holder);
}else //取出viewHolder
{
holder = (ViewHolder) convertView.getTag();
}
holder.ivIcon.setImageResource(R.drawable.ic_launcher);
String url = mList.get(position).newsIconUrl;
holder.ivIcon.setTag(url); //创建身份标识,将url作为标识
// new ImageLoader().showImageByThread(holder.ivIcon,
// mList.get(position).newsIconUrl);
mImageLoader.showImageByAsyncTask(holder.ivIcon, url);
holder.tvTitle.setText(mList.get(position).getNewsTitle());
holder.tvContent.setText(mList.get(position).getNewsContent());
return convertView;
}
class ViewHolder{
TextView tvTitle,tvContent;
ImageView ivIcon;
}
@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;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE)
{
// 加载可见项
mImageLoader.loadImages(mStart, mEnd);
} else {
// 停止任务
mImageLoader.cancelAllTast();
}
}
}