Search code examples
androidandroid-listviewandroid-video-playerandroid-videoview

Play video using videoview in Listview


Friends I want to play my videos inside video view which is available in lists. I am not happy with the current code as its not playing except the first video. My requirement is when I click the button on video view in any item of list must play efficiently.

The below is my adapter which I set in listview to show all the videos downloaded from url and on click of button play it in videoview hiding the play button.

public class RantAdapter extends AbsAdapter {

public RantAdapter(Activity activity, ArrayList<RantModel> rantList) {
    super(activity, rantList);
}

GestureDetector mGestureDetector;
TextView likeCount = null;
TextView RantTitle = null;
VideoView videoView = null;
ImageView author = null;
ImageView videoImageUrl = null;
TextView author_name = null;
TextView commentCount = null;
OnGestureListener mGesturelistener;
Button playVideo;
Uri uri;

@Override
public View getView(int position, View view, ViewGroup parent) {

    super.getView(position, view, parent);

    LayoutInflater inflater = (LayoutInflater) mActivity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater
            .inflate(R.layout.rant_row_layout, parent, false);


    RantModel rantModel = mListContent.get(position);

    RantTitle.setText(rantModel.title);
    author.setImageBitmap(loadImageFromURL(rantModel.author_image_url));
    author_name.setText(rantModel.author_name);
    likeCount.setText(rantModel.view_count);
    commentCount.setText(rantModel.comment_count);
    videoImageUrl.setImageBitmap(loadImageFromURL(rantModel.content_image_url));

    final String videoUrl = rantModel.content_url;

    uri = Uri.parse(videoUrl);

    playVideo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            playVideo.setVisibility(View.GONE);
            videoImageUrl.setVisibility(View.INVISIBLE);
            MediaController mediacontrol = new MediaController(mActivity);
            mediacontrol.setAnchorView(videoView);
            videoView.stopPlayback();               
            videoView.setMediaController(mediacontrol);
            videoView.setVideoURI(uri); // videoView.seekTo(100);
            videoView.requestFocus();
            videoView.setZOrderOnTop(true);
            videoView.start();

        }
    });
    return rowView;
}}

Solution

  • please remove the following code

    if (rowView != null) {
    }