Nessuna descrizione

TestPhotoGridAdapter.java 3.9KB

    package ai.pai.ptp.test; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import java.util.ArrayList; import ai.pai.ptp.R; public class TestPhotoGridAdapter extends BaseAdapter { private MyTestActivity cameraActivity; private ArrayList<Photo> photos; private GridView gridView; private LayoutInflater inflater; private int height; public TestPhotoGridAdapter(MyTestActivity context, GridView gridView) { cameraActivity = context; this.gridView = gridView; photos = new ArrayList<>(); inflater = LayoutInflater.from(context); int screenW = context.getResources().getDisplayMetrics().widthPixels; height = (int) (screenW - 4 * 3 * context.getResources().getDisplayMetrics().density) / 3; } @Override public int getCount() { return photos.size(); } @Override public Object getItem(int position) { return photos.get(position); } @Override public long getItemId(int position) { return position; } public void addPhoto(final Photo photo) { gridView.post(new Runnable() { @Override public void run() { photos.add(0, photo); notifyDataSetChanged(); } }); } public void updatePhoto(final Photo newPhoto) { gridView.post(new Runnable() { @Override public void run() { boolean isFound = false; for(int k = 0; k < photos.size();k++){ if(photos.get(k).handle == newPhoto.handle){ photos.get(k).captureTime = newPhoto.captureTime; photos.get(k).thumb = newPhoto.thumb; photos.get(k).origin = newPhoto.origin; photos.get(k).fileName = newPhoto.fileName; isFound = true; break; } } if(!isFound){ photos.add(0,newPhoto); } notifyDataSetChanged(); } }); } public void addPhotos(final int[] handles){ gridView.post(new Runnable() { @Override public void run() { ArrayList<Photo> tmp = new ArrayList<>(); for(int k =0;k<handles.length;k++){ Photo photo = new Photo(); photo.handle = handles[k]; tmp.add(photo); } photos.addAll(0,tmp); notifyDataSetChanged(); } }); } public void clear() { gridView.post(new Runnable() { @Override public void run() { photos.clear(); notifyDataSetChanged(); } }); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.item_grid_photo, null); holder = new ViewHolder(); holder.photo = (ImageView) convertView.findViewById(R.id.iv_photo); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.photo.getLayoutParams().height = height; Photo photo = photos.get(position); if (photo.thumb != null) { holder.photo.setImageBitmap(photo.thumb); } else if (photo.origin != null) { holder.photo.setImageBitmap(photo.origin); } else if(photo.handle >0 && !photo.isSync){ photo.isSync = true; cameraActivity.retrieveImageInfo(photo.handle); } return convertView; } final class ViewHolder { public ImageView photo; } }