Home » Android » android – How Do I Play Video in ListView like Instagram and Vine?

android – How Do I Play Video in ListView like Instagram and Vine?

Posted by: admin May 14, 2020 Leave a comment

Questions:

I’m new to android development and I am trying to play multiple videos in a listview. Currently, each listview row item is a VideoView. This approach has not worked as the VideoViews act abnormally when I begin to scroll. I’ve researched here, here, here and discovered that VideoViews and TextureViews don’t work well within ListViews and ScrollViews. How are apps like vine and instagram able to play videos in listviews? Any help is greatly appreciated?

How to&Answers:

Although the answer is late but i think it might help someone searching for the same. There is a sample app from the github that has implementation for this requirement.:-

https://github.com/danylovolokh/VideoPlayerManager

For understanding of code refer to the following link it is really helpful for you:-

https://medium.com/@v.danylo/implementing-video-playback-in-a-scrolled-list-listview-recyclerview-d04bc2148429

The problem is that there are some limitations in VideoView in listview
and handling playbacks so this library implement is the VideoView based on the TextureView. Here is it how it looks likeenter image description here

Answer:

For playing videos in Listview, you need to open Video on Item Click of ListView then you can retrieve your video url in String like:

String  myUrl = urHashMaparraylist.get(position).get("videolocation");

Now pass this myUrl to next Activity and just set this String as a

 Uri video = Uri.parse(myUrl);
 videoView.setVideoURI(video);

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     {
        String  myUrl = urHashMaparraylist.get(position).get("videolocation");
        Intent n = new Intent(YourActivityName.this , NewActivityName.class);
        n.putExtra("videolocation",myUrl);
        startActivity(n);    
    }

});

Now in your next Activity retrieve it as a

Uri video = Uri.parse(url);
videoView.setVideoURI(video);

In some case,
for setting VideoView,you can use:

 android:background:"#0000"

as from Android Scrollview having videoview is giving problem

Instead of VideoView you can also try using TextureView for reference you can see number 2 reference:

For more reference for video streaming … you can check the following url:
1>http://developer.samsung.com/android/technical-docs/Android-Media-Streaming-Tutorial

2>http://developer.android.com/reference/android/view/TextureView.html