package com.roboo.like.google.adapters; import java.util.LinkedList; import android.app.Activity; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.SectionIndexer; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.roboo.like.google.AddActivity; import com.roboo.like.google.R; import com.roboo.like.google.dao.impl.NewsTypeItemDaoImpl; import com.roboo.like.google.databases.DBHelper; import com.roboo.like.google.models.NewsTypeItem; import com.roboo.like.google.swipelistview.SwipeListView; /** * 首页新闻类型列表适配器 * @author bo.li * * 2014-7-30 上午10:16:36 * * TODO */ public class StartNewsTypeListAdapter extends BaseAdapter implements StickyHeadersAdapter, SectionIndexer { private LinkedList<NewsTypeItem> mData; private Activity activity; private LayoutInflater mInflater; private ImageLoader mImageLoader; public StartNewsTypeListAdapter(LinkedList<NewsTypeItem> mData, Activity activity) { super(); this.mData = mData; this.activity = activity; mInflater = LayoutInflater.from(activity); mImageLoader = ImageLoader.getInstance(); if(!mImageLoader.isInited()) { mImageLoader.init(ImageLoaderConfiguration.createDefault(activity)); } } @Override public int getCount() { return null == mData ? 0 : mData.size(); } @Override public Object getItem(int position) { return null == mData ? null : mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final NewsTypeItem item = mData.get(position); if(convertView == null) { convertView = mInflater.inflate(R.layout.list_news_type_item, null);// TODO if (parent instanceof SwipeListView) { convertView = mInflater.inflate(R.layout.list_news_swipe_type_item, null);// TODO } } TextView textView = ViewHolder.getView(convertView, R.id.tv_title); ImageView imageView = ViewHolder.getView(convertView, R.id.iv_image); Button btnDelete = ViewHolder.getView(convertView, R.id.btn_delete); final Button btnFav = ViewHolder.getView(convertView, R.id.btn_fav); if (activity instanceof AddActivity) { btnDelete.setText("添加"); btnDelete.setCompoundDrawablesWithIntrinsicBounds(R.drawable.swipe_add_selector, 0, 0, 0); } if(item.fav) { btnFav.setText("取消收藏"); } else { btnFav.setText("收藏"); } btnDelete.setOnClickListener(new OnClickListener() { public void onClick(View v) { mData.remove(item); NewsTypeItemDaoImpl newsTypeItemDaoImpl = new NewsTypeItemDaoImpl(new DBHelper(activity)); boolean returnFlag = newsTypeItemDaoImpl.updateFlag(item.md5, !item.flag); if (returnFlag) { System.out.println("修改成功"); } notifyDataSetChanged(); } }); btnFav.setOnClickListener(new OnClickListener() { public void onClick(View v) { NewsTypeItemDaoImpl newsTypeItemDaoImpl = new NewsTypeItemDaoImpl(new DBHelper(activity)); boolean returnFav = newsTypeItemDaoImpl.updateFav(item.md5, !item.fav); if (returnFav) { mData.remove(position); boolean fav = newsTypeItemDaoImpl.getFav(item.md5); item.fav = fav; mData.add(position, item); System.out.println("修改成功"); } notifyDataSetChanged(); } }); textView.setText(item.name); DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.ic_default_image).showImageForEmptyUri(R.drawable.ic_default_image).showImageOnFail(R.drawable.ic_default_image).cacheInMemory().cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build(); mImageLoader.displayImage(item.img, imageView, options); return convertView; } @Override public Object[] getSections() { return null; } @Override public int getPositionForSection(int section) { return 0; } @Override public int getSectionForPosition(int position) { return 0; } @Override public long getHeaderId(int position) { return 0; } @Override public View getHeaderView(int position, View convertView, ViewGroup parent) { // convertView = mInflater.inflate(R.layout.sticky_header_view, parent, false); // TextView textView = ViewHolder.getView(convertView, R.id.tv_text); // textView.setText("" + (1 + position)); // textView.setVisibility(View.GONE); // ViewHolder.getView(convertView, R.id.frame_container).setVisibility(View.GONE); convertView = new View(activity); return convertView; } }