我想在列表视图中显示多个YouTube视频网址(位于arraylist中)。此列表视图应显示该视频的URL和缩略图,如果用户选择任何视频,则应在下一个全屏播放。
我怎样才能在Java和XML中做到这一点?
答案 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。