如何识别哪个viewholder.webview应调用onpause()方法

时间:2016-10-15 05:26:13

标签: android listview webview youtube

我有一个列表视图,其中每个项目都有内置webview,播放嵌入的YouTube视频。 但问题是每当我按下后退按钮时,音频都会在后台继续播放。

我已经在activity的onpause方法上尝试了webview.onpause()。但它没有用。

可能是适配器类中viewholder.webview.onpause()的调用并未停止正在播放视频的实际viweholder。

如何识别应该将哪个viewholder.webview调用onpause()。

请找到以下代码。

enter code here

公共类VideoGallaryAdapter扩展了BaseAdapter {

private ArrayList<VideoItem> mItemList;
private Activity mContext;
private ViewHolder holder;
private String part2;
private WebView currentWebview;
int position;

public VideoGallaryAdapter(Activity context, ArrayList<VideoItem> itemList)
{
    mContext = context;
    mItemList = itemList;
}

@Override
public int getCount() {
    return mItemList.size();
}

@Override
public Object getItem(int position) {
    return mItemList.get(position);
}

@Override
public long getItemId(int position) {
    return mItemList.get(position).hashCode();
}

private static class ViewHolder {
    WebView displayYoutubeVideo;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    holder = null;
    VideoItem item = mItemList.get(position);
    String video_url = item.getmVideoUrl();
    this.position = position;

    if (convertView == null) {
        convertView =  LayoutInflater.from(mContext).inflate(R.layout.video_item_layout, null);
        holder = new ViewHolder();
        holder.displayYoutubeVideo = (WebView) convertView.findViewById(R.id.videoPlayer);
        convertView.setTag(holder);
    }

    holder = (ViewHolder) convertView.getTag();

    String[] parts = video_url.split("v=");
    part2 = parts[1];
    part2 = "https://www.youtube.com/embed/"+part2+"?rel=0";

    displayYoutubeVideo.setWebViewClient(new WebViewClient());
    displayYoutubeVideo.getSettings().setJavaScriptEnabled(true);
    displayYoutubeVideo.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    displayYoutubeVideo.getSettings().setPluginState(WebSettings.PluginState.ON);
    displayYoutubeVideo.setWebChromeClient(new WebChromeClient());
    return convertView;
}


public void stopwebView(){
   if(holder!=null && holder.displayYoutubeVideo!=null)
        holder.displayYoutubeVideo.onPause();
}

public void resumeWebView(){
    if(holder!=null && holder.displayYoutubeVideo!=null)
    holder.displayYoutubeVideo.onResume();
}

}

0 个答案:

没有答案