package macbury.pod.adapters; import android.content.Context; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.koushikdutta.ion.Ion; import java.util.ArrayList; import java.util.List; import macbury.pod.R; import macbury.pod.db.models.Program; /** * Created by macbury on 12.09.14. */ public class ProgramsAdapter extends BaseAdapter { private static final String TAG = "ProgramsAdapter"; private final Context context; private final ArrayList<Program> programs; private final ProgramsAdapterListener listener; public ProgramsAdapter(Context context, List<Program> programs, ProgramsAdapterListener listener) { this.context = context; this.listener = listener; this.programs = new ArrayList<Program>(); set(programs); } public void set(List<Program> nprogs) { this.programs.clear(); this.programs.addAll(nprogs); this.notifyDataSetChanged(); } @Override public int getCount() { return programs.size(); } @Override public Program getItem(int position) { return programs.get(position); } @Override public long getItemId(int position) { return getItem(position).id; } @Override public View getView(int position, View convertView, ViewGroup parent) { ProgramHolder holder; if (convertView == null) { holder = new ProgramHolder(); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.program_grid_item, parent, false); holder.programPreview = (ImageView)convertView.findViewById(R.id.program_preview); holder.programTitle = (TextView)convertView.findViewById(R.id.program_title); holder.convertView = convertView; holder.convertView.setOnTouchListener(holder); convertView.setTag(holder); } else { holder = (ProgramHolder)convertView.getTag(); } Program program = getItem(position); holder.position = position; Ion.with(context).load(program.image).withBitmap().placeholder(R.drawable.placeholder).intoImageView(holder.programPreview); holder.programTitle.setText(program.name); return convertView; } public class ProgramHolder implements View.OnTouchListener { public ImageView programPreview; public TextView programTitle; public View convertView; public int position; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { convertView.setAlpha(0.6f); convertView.invalidate(); break; } case MotionEvent.ACTION_UP: listener.onProgramSelect(getItem(position)); case MotionEvent.ACTION_CANCEL: { convertView.setAlpha(1f); convertView.invalidate(); break; } } return true; } } public interface ProgramsAdapterListener { public void onProgramSelect(Program program); } }