Skip to content

Instantly share code, notes, and snippets.

@devloe
Last active December 30, 2015 00:28
Show Gist options
  • Save devloe/7749279 to your computer and use it in GitHub Desktop.
Save devloe/7749279 to your computer and use it in GitHub Desktop.
videoAdapter = new VideoAdapter(this, videoItems);
listView.setAdapter(videoAdapter);
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int position,
long id) {
VideoModel data = (VideoModel) listView.getItemAtPosition(position);
data.start = true;
videoAdapter.notifyDataSetChanged();
//VideoLayout view = (VideoLayout) listView.getChildAt(position - listView.getFirstVisiblePosition());
//view.start(data);
}
});
new getVideosTask().execute();
public class VideoAdapter extends BaseAdapter{
private Context context;
private ArrayList<VideoModel> items;
public VideoAdapter(Context c, ArrayList<VideoModel> items) {
context = c;
setItems(items);
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
static class ViewHolder{
public MyImageView imageView;
public MyVideoView videoView;
public TextView titleView;
public ViewHolder(View row) {
imageView = (MyImageView) row.findViewById(R.id.placeholder);
videoView = (MyVideoView) row.findViewById(R.id.video);
titleView = (TextView) row.findViewById(R.id.title);
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public View getView(final int position, View convertView, ViewGroup parent)
{
final ViewHolder viewHolder;
View row = convertView;
if (row == null) {
LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = li.inflate(R.layout.video, parent, false);
viewHolder = new ViewHolder(row);
row.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) row.getTag();
}
VideoModel item = items.get(position);
viewHolder.titleView.setText(item.title);
viewHolder.titleView.bringToFront();
viewHolder.titleView.setShadowLayer(15, 0, 0, Color.argb(200, 0, 0, 0));
viewHolder.titleView.setBackground(new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM,
new int[]{Color.argb(200, 0, 0, 0), Color.argb(0, 0, 0, 0)}
));
viewHolder.imageView.setImageUrl(item.imageUrl);
if(item.start){
item.start = false;
viewHolder.titleView.setText("Cargando...");
viewHolder.videoView.setVideoURI(Uri.parse(item.videoUrl.replace(".mp4", ".webm")));
viewHolder.videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
viewHolder.videoView.bringToFront();
}
});
viewHolder.videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
viewHolder.videoView.stopPlayback();
viewHolder.titleView.bringToFront();
}
});
viewHolder.videoView.start();
}
return row;
}
public ArrayList<VideoModel> getItems() {
return items;
}
public void setItems(ArrayList<VideoModel> items) {
this.items = items;
}
}
@devloe
Copy link
Author

devloe commented Dec 2, 2013

Not working. If I click on the first row, the third row gets clcked too!
This is driving me crazy and I dont understand why this is happening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment