package com.marshalchen.common.uimodule.multi_image_selector.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.marshalchen.ultimateandroiduicomponent.R; import com.squareup.picasso.Picasso; import java.io.File; import java.util.ArrayList; import java.util.List; import com.marshalchen.common.uimodule.multi_image_selector.bean.Folder; /** * 文件夹Adapter * Created by Nereo on 2015/4/7. */ public class FolderAdapter extends BaseAdapter { private Context mContext; private LayoutInflater mInflater; private List<Folder> mFolders = new ArrayList<>(); int mImageSize; int lastSelected = 0; public FolderAdapter(Context context){ mContext = context; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mImageSize = mContext.getResources().getDimensionPixelOffset(R.dimen.multi_image_select_folder_cover_size); } /** * 设置数据集 * @param folders */ public void setData(List<Folder> folders) { if(folders != null && folders.size()>0){ mFolders = folders; }else{ mFolders.clear(); } notifyDataSetChanged(); } @Override public int getCount() { return mFolders.size()+1; } @Override public Folder getItem(int i) { if(i == 0) return null; return mFolders.get(i-1); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if(view == null){ view = mInflater.inflate(R.layout.multi_image_select_list_item_folder, viewGroup, false); holder = new ViewHolder(view); }else{ holder = (ViewHolder) view.getTag(); } if (holder != null) { if(i == 0){ holder.name.setText("所有图片"); holder.size.setText(getTotalImageSize()+"张"); if(mFolders.size()>0){ Folder f = mFolders.get(0); Picasso.with(mContext) .load(new File(f.cover.path)) .error(R.drawable.multi_image_select_default_error) .resize(mImageSize, mImageSize) .centerCrop() .into(holder.cover); } }else { holder.bindData(getItem(i)); } if(lastSelected == i){ holder.indicator.setVisibility(View.VISIBLE); }else{ holder.indicator.setVisibility(View.GONE); } } return view; } private int getTotalImageSize(){ int result = 0; if(mFolders != null && mFolders.size()>0){ for (Folder f: mFolders){ result += f.images.size(); } } return result; } public void setSelectIndex(int i) { if(lastSelected == i) return; lastSelected = i; notifyDataSetChanged(); } public int getSelectIndex(){ return lastSelected; } class ViewHolder{ ImageView cover; TextView name; TextView size; ImageView indicator; ViewHolder(View view){ cover = (ImageView)view.findViewById(R.id.cover); name = (TextView) view.findViewById(R.id.name); size = (TextView) view.findViewById(R.id.size); indicator = (ImageView) view.findViewById(R.id.indicator); view.setTag(this); } void bindData(Folder data) { name.setText(data.name); size.setText(data.images.size()+"张"); // 显示图片 Picasso.with(mContext) .load(new File(data.cover.path)) .placeholder(R.drawable.multi_image_select_default_error) .resize(mImageSize, mImageSize) .centerCrop() .into(cover); // TODO 选择标识 } } }