在列表视图中显示YouTube视频网址和缩略图

时间:2016-10-13 17:46:50

标签: android listview

我想在列表视图中显示多个YouTube视频网址(位于arraylist中)。此列表视图应显示该视频的URL和缩略图,如果用户选择任何视频,则应在下一个全屏播放。

我怎样才能在Java和XML中做到这一点?

1 个答案:

答案 0 :(得分:0)

假设网址&视频数据由您的后端提供,步骤如下:

1)创建一个名为' Video'

的Java类
public class Video
{
    String Thumbnail;
    String Url;
    String Title;

    //GET & SET Methods
}

有关Java类的更多信息,请refer this

将所有视频对象添加到Video

类型的ArrayList中

示例:ArrayList<Video> videos = new ArrayList<~>();

2)创建一个名为&#39; single_video_item.xml&#39;在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)创建Video

类型的自定义ListView适配器

为了显示所有视频,您需要一个自定义ListView适配器来迭代您的ArrayList对象。有关ListView适配器的更多信息,请Refer this

将文件命名为&#39; FeedAdapter.java&#39; &安培;使用以下代码

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&amp;传递视频列表。

在您的Activity on onCreate中,定义ListView&amp;初始化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:我用内存写了整个代码,如果有任何语法错误,请告诉我! ;)

修改

如果您收到缩略图作为图片网址,请通过Facebook结帐Fresco。它允许您传递图像URL&amp;将其设置为ListView中的图像。如果你选择这种方法,你将不再需要android ImageView。