|
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;
}
}
|