package de.vanmar.android.yarrn.projects; import android.app.Activity; import android.os.Build; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.ImageView; import com.androidquery.AQuery; import java.util.Collection; import de.vanmar.android.yarrn.R; import de.vanmar.android.yarrn.ravelry.dts.Photo; public class PhotoAdapter extends ArrayAdapter<Photo> { interface PhotoAdapterListener { void onMoveLeft(int position); void onMoveAllLeft(int position); void onMoveRight(int position); void onMoveAllRight(int position); } private boolean editable = false; private PhotoAdapterListener listener; private class ViewHolder { private ImageView photo; private View edit_overlay; private ImageButton move_left; private ImageButton move_all_left; private ImageButton move_right; private ImageButton move_all_right; } private final Activity context; public PhotoAdapter(final Activity context) { super(context, 0); this.context = context; } public void setItems(Collection<? extends Photo> collection) { clear(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { super.addAll(collection); } else { setNotifyOnChange(false); clear(); for (Photo photo : collection) { add(photo); } // this sets notifyOnChange to true, regardless of former state notifyDataSetChanged(); } } public void setEditable(boolean editable) { this.editable = editable; notifyDataSetChanged(); } public void setPhotoAdapterListener(PhotoAdapterListener listener) { this.listener = listener; } public PhotoAdapterListener getPhotoAdapterListener() { return listener; } @Override public View getView(final int position, final View convertView, final ViewGroup parent) { final View view; final ViewHolder holder; if (convertView != null) { view = convertView; holder = (ViewHolder) view.getTag(); } else { view = context.getLayoutInflater().inflate( R.layout.photogallery_item, parent, false); holder = new ViewHolder(); holder.photo = (ImageView) view.findViewById(R.id.photo); holder.edit_overlay = view.findViewById(R.id.edit_overlay); holder.move_left = (ImageButton) view.findViewById(R.id.move_left); holder.move_all_left = (ImageButton) view.findViewById(R.id.move_all_left); holder.move_right = (ImageButton) view.findViewById(R.id.move_right); holder.move_all_right = (ImageButton) view.findViewById(R.id.move_all_right); view.setTag(holder); } final Photo photo = getItem(position); new AQuery(view).id(holder.photo).image(photo.squareUrl); holder.edit_overlay.setVisibility(editable ? View.VISIBLE : View.GONE); holder.move_left.setVisibility(position > 0 ? View.VISIBLE : View.GONE); holder.move_all_left.setVisibility(position > 0 ? View.VISIBLE : View.GONE); holder.move_right.setVisibility(position < getCount() - 1 ? View.VISIBLE : View.GONE); holder.move_all_right.setVisibility(position < getCount() - 1 ? View.VISIBLE : View.GONE); holder.move_left.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onMoveLeft(position); } } }); holder.move_all_left.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onMoveAllLeft(position); } } }); holder.move_right.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onMoveRight(position); } } }); holder.move_all_right.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onMoveAllRight(position); } } }); return view; } }