package net.ggelardi.flucso.data; import java.util.ArrayList; import net.ggelardi.flucso.R; import net.ggelardi.flucso.serv.Commons; import android.content.Context; import android.net.Uri; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; public class PostFileAdapter extends BaseAdapter { private final ArrayList<ImageRef> imglist; private final OnClickListener listener; private final LayoutInflater inflater; public PostFileAdapter(Context context) { super(); imglist = new ArrayList<ImageRef>(); listener = (OnClickListener) context; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return imglist.size(); } @Override public ImageRef getItem(int position) { return imglist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; View view = convertView; if (view == null) { view = inflater.inflate(R.layout.item_post_file, parent, false); vh = new ViewHolder(); vh.img = (ImageView) view.findViewById(R.id.img_post_file_src); vh.del = (ImageView) view.findViewById(R.id.img_post_file_del); vh.del.setOnClickListener(listener); view.setTag(vh); } else { vh = (ViewHolder) view.getTag(); } Commons.picasso(view.getContext().getApplicationContext()).load(imglist.get(position).uri).placeholder( R.drawable.ic_action_picture).into(vh.img); vh.del.setTag(Integer.valueOf(position)); return view; } public void clear() { imglist.clear(); notifyDataSetChanged(); } public boolean append(ImageRef item) { for (ImageRef u : imglist) if (item.path.equals(u.path)) return false; imglist.add(item); notifyDataSetChanged(); return true; } public void remove(int position) { if (position >= 0 && position < imglist.size()) { imglist.remove(position); notifyDataSetChanged(); } } public static class ImageRef { public Uri uri; public String mime; public String path; public String getMimeExt() { return mime != null && mime.indexOf("/") > 0 ? mime.split("/")[1] : ""; } @Override public String toString() { StringBuilder result = new StringBuilder(); result.append(this.getClass().getName() + " Object { "); result.append(" mime: \"" + mime + "\""); result.append(" path: \"" + path + "\""); result.append(" uri: " + uri.toString()); result.append(" }"); return result.toString(); } } static class ViewHolder { ImageView img; ImageView del; } }