我正在使用YouTube Android播放器API在我的应用程序中播放视频。我试图展示视频的缩略图,当有人点击缩略图时,视频就会播放。Android如何显示YouTube视图的ListView
主要活动有一个列表视图,我想添加视频缩略图到这个列表视图。
我创建了这个自定义适配器,
public class MySimpleArrayAdapter extends ArrayAdapter<String> implements YouTubeThumbnailView.OnInitializedListener {
private final Context context;
private final ArrayList<String> values;
int videoPosition=0;
private YouTubeThumbnailLoader youTubeThumbnailLoader;
String API_KEY="MYKEY";
public MySimpleArrayAdapter(Context context, ArrayList<String> values) {
super(context, R.layout.thumbnail, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@SuppressLint("ViewHolder") View rowView = inflater.inflate(R.layout.thumbnail, parent, false);
videoPosition=position;
YouTubeThumbnailView youTubeThumbnailView = (YouTubeThumbnailView)rowView.findViewById(R.id.thumb);
youTubeThumbnailView.initialize(API_KEY, this);
return rowView;
}
@Override
public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader thumbnailLoader) {
youTubeThumbnailLoader=thumbnailLoader;
thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener());
youTubeThumbnailLoader.setVideo(values.get(videoPosition));;
}
@Override
public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
}
private final class ThumbnailLoadedListener implements
YouTubeThumbnailLoader.OnThumbnailLoadedListener {
@Override
public void onThumbnailError(YouTubeThumbnailView arg0, YouTubeThumbnailLoader.ErrorReason arg1) {
}
@Override
public void onThumbnailLoaded(YouTubeThumbnailView arg0, String arg1) {
}
}
}
,我该适配器设置为ListView和我传递三个视频标识(如一个ArrayList的)这个适配器,但这样做的问题是每当行youTubeThumbnailLoader.setVideo(values.get(videoPosition))
被执行,变量videoPosition
是2并且它为所有视频设置相同的缩略图。我想可能是适配器不等待,直到缩略图加载并快速渲染所有行(因为videoPosition的值达到最终值)我试着添加'while(isWait);'在return rowview
之前(我在onThumbnailLoaded
和onThumbnailError
函数中将isWait设置为true,isWait是AtomicBoolean),但它不起作用。
有人可以告诉我为什么发生这种情况,以及如何解决?
谢谢:)
谢谢:) 这是一件好事,我今天:) 了解到移动监听器里'初始化()',而不是写'this'工作。我删除了'videoPosition',因为我可以在那里使用'position'。 – Karthik 2014-10-11 16:36:35