2015-07-21 15 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 –