package com.buaa.shortytall.adapter; import java.util.ArrayList; import java.util.List; import com.buaa.shortytall.MyHealth; import com.buaa.shortytall.R; import com.buaa.shortytall.activity.NewsDetailActivity; import com.buaa.shortytall.bean.News; import com.buaa.shortytall.network.ImageCache; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Toast; public class NewsAdapter extends BaseAdapter{ private Context mContext; private Handler mHandler; private List<News> mNews; public NewsAdapter(Context context, Handler handler){ this.mContext = context; this.mHandler = handler; this.mNews = new ArrayList<News>(); ImageCache.getInstance().setHandler(mHandler); } public void setData(List<News> mNews){ this.mNews = mNews; notifyDataSetChanged(); } @Override public int getCount() { if (mNews != null){ return mNews.size(); } return 0; } @Override public Object getItem(int arg0) { if (mNews != null){ return mNews.get(arg0); } return null; } @Override public long getItemId(int arg0) { return arg0; } @Override public View getView(int position, View convertView , ViewGroup parent) { NewsItem newsitem = new NewsItem(mContext); if ( convertView == null || convertView.getTag() == null){ newsitem = new NewsItem(mContext); } else{ newsitem = (NewsItem)convertView.getTag(); } final News news = mNews.get(position); final String title = news.getmTitle(); final String date = news.getmDate(); newsitem.setTitle(title); newsitem.setDate(date); if (news.getmAvatar() != null){ Bitmap bitmap = ImageCache.getInstance().getCachedBitmap(news.getmAvatar()); if (bitmap != null){ newsitem.setAvatar(bitmap); }else{ newsitem.setAvatarById(R.drawable.ic_launcher); ImageCache.getInstance().getBitmapFromUrl(news.getmAvatar()); } } newsitem.getView().setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mContext,NewsDetailActivity.class); intent.putExtra(MyHealth.Bundle_keys.NEWS_ID, news.getmId()); mContext.startActivity(intent); } }); return newsitem.getView(); } }