gpt4 book ai didi

android - ListView 中的 YouTubeThumbnailView

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:05 25 4
gpt4 key购买 nike

Google 发布了适用于 Google 的 YouTube API。在那个 api 中是一个 YouTubeThumbnailView 来显示电影的缩略图。我想在 ListView 中显示缩略图。我做了一个适配器来制作 View 。但我不确定如何处理。

在我的 ListView 适配器的 getView 中,我膨胀了一个包含 YouTubeThumbnailView 的布局。根据文档 (https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubeThumbnailView),我应该调用初始化方法。

我想知道我是否需要调用一次初始化方法,或者如果 View 被 ListView 重新使用也调用此方法?没有办法检查 YouTubeThumbnailView 是否已经初始化?所以我想我应该多次调用它。但我不知道这是否被允许?

最佳答案

您应该只调用它一次,但在初始化后保存对加载程序的引用。处理此问题的一种方法是保留从 ViewYouTubeThumbnailLoader 的映射。在getView中,有3种情况:

  1. View 是新的,需要初始化。
  2. View 已经初始化,我们有一个加载器的引用。
  3. View 当前正在初始化。

在情况 1 和情况 3 中,您需要记住加载程序在初始化时应该做什么。你可以例如将视频 ID 保存在 View 的标签中。

示例代码:

Map<View, YouTubeThumbnailLoader> loaders;

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
String videoId = getVideoId(position);

if (view == null) {
// Case 1 - We need to initialize the loader
view = inflater.inflate(..., parent, false);
YouTubeThumbnailView thumbnail = (YouTubeThumbnailView) view.findViewById(R.id.thumbnail);
thumbnail.setTag(videoId);
thumbnail.initialize(DeveloperKey.DEVELOPER_KEY, thumbnailListener);
} else {
YouTubeThumbnailView thumbnail = (YouTubeThumbnailView) view.findViewById(R.id.thumbnail);
YouTubeThumbnailLoader loader = loaders.get(thumbnail);
if (loader == null) {
// Case 3 - The loader is currently initializing
thumbnail.setTag(videoId);
} else {
// Case 2 - The loader is already initialized
thumbnail.setImageResource(R.drawable.loading_thumbnail);
loader.setVideo(videoId);
}
}
return view;
}

在你的 thumbnailListener 中:

  @Override
public void onInitializationSuccess(YouTubeThumbnailView view, YouTubeThumbnailLoader loader) {
String videoId = (String) view.getTag();
loaders.put(view, loader);
view.setImageResource(R.drawable.loading_thumbnail);
loader.setVideo(videoId);
}

关于android - ListView 中的 YouTubeThumbnailView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com