2015-07-21 100 views
0

这是我的代码。我想在列表视图中使用视频显示多个视频,但无法做到这一点

public class MainActivity extends Activity { 
    ListView list; 
    public ArrayList<String> videoList; 
    public CustomListAdapter adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     list =(ListView)findViewById(R.id.list); 
     videoList = new ArrayList<String>(); 
     videoList.add("https://www.youtube.com/watch?v=Zgfi7wnGZlE"); 
     videoList.add("https://www.youtube.com/watch?v=Zgfi7wnGZlE"); 
     videoList.add("https://www.youtube.com/watch?v=Zgfi7wnGZlE"); 
     videoList.add("http://www.youtube.com/watch?v=DdlWPL53PvQ#sthash.fW5EtDFb.dpuf"); 
     Log.d("size of videoList:",""+ videoList.size()); 
     adapter = new CustomListAdapter(MainActivity.this, videoList); 
     list.setAdapter(adapter); 
    } 
    public class CustomListAdapter extends BaseAdapter { 
     private Activity activity; 
     private LayoutInflater inflater; 
     private ArrayList<String> videoList; 

     public CustomListAdapter(Activity activity, ArrayList<String> videoList) { 
      this.activity = activity; 
      this.videoList = videoList; 
     } 

     @Override 
     public int getCount() { 
      return videoList.size(); 
     } 

     @Override 
     public Object getItem(int location) { 
      return videoList.get(location); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

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

      if (inflater == null) 
       inflater = (LayoutInflater) activity 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      if (convertView == null) 
       convertView = inflater.inflate(R.layout.list_row, null); 

       VideoView video = (VideoView)convertView.findViewById(R.id.video_view); 
      video.setVideoPath(videoList.get(position)); 
      video.start(); 
      return convertView; 
     } 

    }  
} 

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_row_selector" /> 

</RelativeLayout> 

list_raw.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_row_selector" 
    android:padding="8dp" > 

    <!-- Thumbnail Image --> 


    <VideoView 
     android:id="@+id/video_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" /> 


</RelativeLayout> 

我不能让视频和没有在logcat的thenb什么问题的任何错误显示? 我在清单中添加了Internet权限是否需要任何或许可或任何其他设置?

+0

请http://www.androidpeople.com/android-videoview-example – Pavya

+0

@nidhi我会采取更多的负载,因为每个项目视图尝试下载视频。但在ListView中显示的最佳方式是在那里拍摄一张拇指图像和显示图像 – PankajAndroid

回答

0

尝试设置的VideoURI代替VideoPath再次检查,

VideoView video = (VideoView)convertView.findViewById(R.id.video_view); 
MediaController mediaController = new MediaController(this); 
mediaController.setAnchorView(video); 
video.setMediaController(mediaController); 
video.setVideoURI(Uri.parse(videoList.get(position))); 
video.start(); 

UPDATE:如果您计划使用来自YouTube视频的只有那么最好的办法是使用官方YouTube API。入住这里,

Android YouTube app Play Video Intent

How to Play YouTube Video in Android App

+0

我已添加此代码而不是设置视频电影我已设置视频仍然​​视频不显示在我的列表视图中我得到空白列表视图。 –

0

我认为我们不应该把视频视图直接在列表中,因为在列表中的每一个观点都重绘或无效很多次,如果任何视频被由用户播放和观看,他不小心将其从屏幕上滚动,Android操作系统将释放该内存,因此视频将从“开始”播放。 Video.start()将被一次又一次地称为

最佳解决方案是提供视频的任意帧的缩略图图像。 将视频视图替换为图像视图并点击它打开放置视频视图并播放的新屏幕。

+0

请为我提供此类代码的链接。 –

+0

通过以下链接,您可以将视频帧作为位图获取。将其设置为图像视图。 http://stackoverflow.com/questions/10071408/how-to-get-frames-of-video-file-in-android –