private RefreshListView mListView;
private Context mContext;
// 网络图片加载
public List getDatas() {
return mDatas;
}
public void setDatas(List mDatas) {
this.mDatas = mDatas;
}
public void setData(int pos, NewsBean bean) {
if (-1 != pos) {
mDatas.add(pos, bean);
MainActivity.urls.add(pos, bean.NewsPicResUrl);
} else {
mDatas.add(bean);
MainActivity.urls.add(bean.NewsPicResUrl);
}
}
private ImageLoader mImageLoader;
public NewsAdapter(Context context, List mDatas, RefreshListView listView) {
super();
mContext = context;
this.mDatas = mDatas;
this.mInflater = LayoutInflater.from(context);
//抽象成单例后改写 begin
//mImageLoader = new ImageLoader(listView); mImageLoader = ImageLoader.getInstance(context);
mImageLoader.setmListView(listView);
//抽象成单例后改写 end
mListView = listView;
initHeaderView();
initFooterView();
}
private void initFooterView() {
mFooterView = mListView.getFooterView();
}
//下拉刷新数据
public void onDateChange(List mDatas) {
this.mDatas = mDatas;
this.notifyDataSetChanged();
}
//下拉刷新数据
private void initHeaderView() {
headerView = mListView.findViewById(R.id.headerview);
// 获取View高度
headerHeight = mListView.getHeaderHeight();
mTipView = (TextView) headerView.findViewById(R.id.tip);
mTimeView = (TextView) headerView.findViewById(R.id.lastupdate_time);
mArrowView = (ImageView) headerView.findViewById(R.id.arrow);
mBar = (ProgressBar) headerView.findViewById(R.id.progress);
}
@Override
public int getCount() {
if (mDatas != null)
return mDatas.size();
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mDatas.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) {
//Log.i(TAG, “getView->缓存为空:” + position);
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item, parent, false);
holder.pic = (ImageView) convertView.findViewById(R.id.iv_pic);
holder.no = (TextView) convertView.findViewById(R.id.tv_no);
holder.name = (TextView) convertView.findViewById(R.id.tv_name);
holder.description = (TextView) convertView
.findViewById(R.id.tv_description);
convertView.setTag(holder);
} else {
//Log.i(TAG, “getView->缓存过:” + position);
holder = (ViewHolder) convertView.getTag();
}
NewsBean bean = mDatas.get(position);
// 加载网络图片
holder.pic.setTag(bean.NewsPicResUrl);
// mImageLoader.getImageByAsyncTask(holder.pic, bean.NewsPicResUrl);
holder.pic.setImageResource(R.drawable.ic_launcher);
// 滑动优化 如果有缓存,则加载 否则不加载
final Bitmap pBitmap = mImageLoader.setDefaultBitmap(holder.pic, bean.NewsPicResUrl);
// /滑动优化
holder.name.setText(bean.NewsName);
holder.description.setText(bean.NewsDescription);
holder.no.setText(bean.NewsNo);
//添加事件点击 2015 12 24
final String urlBig = bean.NewsPicBigResUrl;
final String urlSmall = bean.NewsPicResUrl;
holder.pic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), “bean.NewsNo:” + urlBig, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext, BigImageActivity.class);
intent.putExtra(“urlBig”, urlBig);
intent.putExtra(“urlSmall”, urlSmall);
mContext.startActivity(intent);
}
});
//
return convertView;
}
class ViewHolder {
public ImageView pic;
public TextView name;
public TextView description;
public TextView no;
}
// 滚动时的优化 begin
private int mStart, mEnd;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
Log.i(TAG, “scrollState:” + mStart + “-” + mEnd);
loadImages();
} else {
Log.i(TAG, “scrollState cancel:”);
mImageLoader.cancelAllTasks();
}
}
private void loadImages() {
if (null != mDatas && mDatas.size() > 0) {
//修复bug 滑动时边缘不加载 begin
int start = mStart != 0 ? mStart - 1 : 0;
int end = mEnd != mDatas.size() ? mEnd + 1 : mEnd;
//修复bug 滑动时边缘不加载 end
mImageLoad