2016-10-13 2 views
-1

Я хочу показать несколько URL-адресов видео YouTube (которые находятся в arraylist) в списке. В этом списке должно отображаться как URL-адрес, так и миниатюра этого видео, и если пользователь выбирает какое-либо видео, он должен воспроизводиться в следующем полноэкранном режиме.Показать URL-адреса и эскизы видео YouTube в списке просмотров

Как я могу это сделать как в Java, так и в XML?

ответ

0

Предполагая, что URL-адрес & видео данных обеспечиваются Backend вашего, шаги были бы следующим образом:

1) Создать класс Java с именем 'Video'

public class Video 
{ 
    String Thumbnail; 
    String Url; 
    String Title; 

    //GET & SET Methods 
} 

Для Дополнительная информация о Java Classes, refer this.

Добавить все видео объекты к ArrayList типа видео

Пример: ArrayList<Video> videos = new ArrayList<~>();

2) Создать новый андроид макет под названием 'single_video_item.xml' в каталоге R.layout

Чтобы отобразить список видео в ListView, нам сначала нужно определить, как выглядит одна строка. Файл будет выглядеть следующим образом:

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

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Video Title" 
     android:textSize="18sp" /> 

    <ImageView 
     android:id="@+id/thumbnail" 
     android:layout_below="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_marginTop="10dp" 
     android:layout_height="300dp" /> 

</RelativeLayout> 

3) Создание пользовательского ListView адаптер типа видео

Для того, чтобы отобразить все видео, вам нужен собственный адаптер ListView, который перебирает ваши объекты ArrayList , Refer this для получения дополнительной информации о адаптерах ListView.

Имя файла как «FeedAdapter.java» & использовать следующий код

public class FeedAdapter extends ArrayAdapter<Video> { 
    public FeedAdapter (Context context, ArrayList<Video> videos) { 
     super(context, 0, users); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Get the data item for this position 
     Video currentVideo = getItem(position);  
     // Check if an existing view is being reused, otherwise inflate the view 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.single_video_item, parent, false); 
     } 
     // Lookup view for data population 
     TextView title = (TextView) convertView.findViewById(R.id.title); 
     ImageView thumbnail = (TextView) convertView.findViewById(R.id.thumbnail); 
     // Populate the data into the template view using the data object 
     title.setText(currentVideo.Title); 
     //And similarly set your imageview data, etc 

     // Return the completed view to render on screen 
     return convertView; 
    } 
} 

Читайте немного о Custom adapters, чтобы получить немного больше воздействия на эту тему.

Теперь, когда мы установили базовую настройку адаптеров, давайте настроим пользовательский адаптер, который мы создали, в ListView & передаем список видео.

В OnCreate вашей деятельности, в определение ListView & инициализации FeedAdapter:

//This is the listview in your main activity's xml 
ListView listView = (ListView) findViewById(R.id.feedListView); 
FeedAdapter<Video> adapter = new FeedAdapter(this, videos); 
listView.setAdapter(adapter); 

Это будет основная структура вашего кода. Ознакомьтесь с дополнительными адаптерами Custom ListView, чтобы получить более четкое представление о процедуре. Удачи!

P.S: Я написал весь код по памяти, дайте мне знать, если есть какие-либо ошибки синтаксиса! ;)

EDIT

Если вы получаете миниатюру как URL изображения, проверки Fresco по Facebook. Он позволяет вам передать URL-адрес изображения &, который будет отображаться как изображение в вашем ListView. Если вы выберете этот метод, вам не понадобится андроид ImageView.

Смежные вопросы