android学习2

CommonAdapter

 package com.zhy.utils;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public abstract class CommonAdapter<T> extends BaseAdapter
{
 protected LayoutInflater mInflater;
 protected Context mContext;
 protected List<T> mDatas;
 protected final int mItemLayoutId;
 public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId)
 {
  this.mContext = context;
  this.mInflater = LayoutInflater.from(mContext);
  this.mDatas = mDatas;
  this.mItemLayoutId = itemLayoutId;
 }
 @Override
 public int getCount()
 {
  return mDatas.size();
 }
 @Override
 public T getItem(int position)
 {
  return mDatas.get(position);
 }
 @Override
 public long getItemId(int position)
 {
  return position;
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent)
 {
  final ViewHolder viewHolder = getViewHolder(position, convertView,
    parent);
  convert(viewHolder, getItem(position));
  return viewHolder.getConvertView();
 }
 public abstract void convert(ViewHolder helper, T item);
 private ViewHolder getViewHolder(int position, View convertView,
   ViewGroup parent)
 {
  return ViewHolder.get(mContext, convertView, parent, mItemLayoutId,
    position);
 }
}

BasePopupWindowForListView

 package com.zhy.utils;
import java.util.List;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.PopupWindow;
public abstract class BasePopupWindowForListView<T> extends PopupWindow
{
 /**
  * 布局文件的最外层View
  */
 protected View mContentView;
 protected Context context;
 /**
  * ListView的数据集
  */
 protected List<T> mDatas;
 public BasePopupWindowForListView(View contentView, int width, int height,
   boolean focusable)
 {
  this(contentView, width, height, focusable, null);
 }
 public BasePopupWindowForListView(View contentView, int width, int height,
   boolean focusable, List<T> mDatas)
 {
  this(contentView, width, height, focusable, mDatas, new Object[0]);
 }
 public BasePopupWindowForListView(View contentView, int width, int height,
   boolean focusable, List<T> mDatas, Object... params)
 {
  super(contentView, width, height, focusable);
  this.mContentView = contentView;
  context = contentView.getContext();
  if (mDatas != null)
   this.mDatas = mDatas;
  if (params != null && params.length > 0)
  {
   beforeInitWeNeedSomeParams(params);
  }
  setBackgroundDrawable(new BitmapDrawable());
  setTouchable(true);
  setOutsideTouchable(true);
  setTouchInterceptor(new OnTouchListener()
  {
   @Override
   public boolean onTouch(View v, MotionEvent event)
   {
    if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
    {
     dismiss();
     return true;
    }
    return false;
   }
  });
  initViews();
  initEvents();
  init();
 }
 protected abstract void beforeInitWeNeedSomeParams(Object... params);
 public abstract void initViews();
 public abstract void initEvents();
 public abstract void init();
 public View findViewById(int id)
 {
  return mContentView.findViewById(id);
 }
 protected static int dpToPx(Context context, int dp)
 {
  return (int) (context.getResources().getDisplayMetrics().density * dp + 0.5f);
 }
}

MyAdapter

 package com.zhy.imageloader;
import java.util.LinkedList;
import java.util.List;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import com.zhy.utils.CommonAdapter;
public class MyAdapter extends CommonAdapter<String>
{
 /**
  * 用户选择的图片,存储为图片的完整路径
  */
 public static List<String> mSelectedImage = new LinkedList<String>();
 /**
  * 文件夹路径
  */
 private String mDirPath;
 public MyAdapter(Context context, List<String> mDatas, int itemLayoutId,
   String dirPath)
 {
  super(context, mDatas, itemLayoutId);
  this.mDirPath = dirPath;
 }
 @Override
 public void convert(final com.zhy.utils.ViewHolder helper, final String item)
 {
  //设置no_pic
  helper.setImageResource(R.id.id_item_image, R.drawable.pictures_no);
  //设置no_selected
    helper.setImageResource(R.id.id_item_select,
      R.drawable.picture_unselected);
  //设置图片
  helper.setImageByUrl(R.id.id_item_image, mDirPath + "/" + item);
  
  final ImageView mImageView = helper.getView(R.id.id_item_image);
  final ImageView mSelect = helper.getView(R.id.id_item_select);
  
  mImageView.setColorFilter(null);
  //设置ImageView的点击事件
  mImageView.setOnClickListener(new OnClickListener()
  {
   //选择,则将图片变暗,反之则反之
   @Override
   public void onClick(View v)
   {
    // 已经选择过该图片
    if (mSelectedImage.contains(mDirPath + "/" + item))
    {
     mSelectedImage.remove(mDirPath + "/" + item);
     mSelect.setImageResource(R.drawable.picture_unselected);
     mImageView.setColorFilter(null);
    } else
    // 未选择该图片
    {
     mSelectedImage.add(mDirPath + "/" + item);
     mSelect.setImageResource(R.drawable.pictures_selected);
     mImageView.setColorFilter(Color.parseColor("#77000000"));
    }
   }
  });
  
  /**
   * 已经选择过的图片,显示出选择过的效果
   */
  if (mSelectedImage.contains(mDirPath + "/" + item))
  {
   mSelect.setImageResource(R.drawable.pictures_selected);
   mImageView.setColorFilter(Color.parseColor("#77000000"));
  }
 }
}

你可能感兴趣的:(android学习2)