我使用的Web视图侧边Recycler视图播放视频,但问题是我不知道如何停止片段上的视频摧毁了声在后台还在玩......请帮助Webview里面的RecyclerVIew播放视频但声音在背景仍在播放后的片段被破坏
public class PageVideoAdapter extends
RecyclerView.Adapter<PageVideoAdapter.MyViewHolder>
{
EventPage activity;
ArrayList<PageVideoModel> list = new ArrayList<>();
DisplayMetrics metrics;
public PageVideoAdapter(EventPage activity, ArrayList<PageVideoModel> list)
{
this.activity = activity;
this.list = list;
metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_video_adapter, parent, false);
return new MyViewHolder(rootView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.titlePageVideoAdapter.setText(list.get(position).getTitle());
holder.web.loadUrl(list.get(position).getVideo_url());
ImageLoader.getInstance().loadImage(list.get(position).getImage_url(),
new ImageLoadingListener() {
@Override
public void onLoadingStarted(String s, View view) {
}
@Override
public void onLoadingFailed(String s, View view, FailReason failReason) {
}
@Override
public void onLoadingComplete(String s, View view, Bitmap bitmap) {
holder.imgPageVideoAdapter.setImageBitmap(bitmap);
}
@Override
public void onLoadingCancelled(String s, View view) {
}
});
holder.imgPageVideoAdapter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.get(holder.getAdapterPosition()).setOpen(true);
notifyDataSetChanged();
}
});
if (list.get(position).isOpen == true) {
holder.imgPageVideoAdapter.setVisibility(View.GONE);
} else {
holder.imgPageVideoAdapter.setVisibility(View.VISIBLE);
}
}
public void clearData() {
list.clear();
notifyDataSetChanged();
}
public void addAll(ArrayList<PageVideoModel> list) {
this.list.addAll(list);
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
@InjectView(R.id.title_PageVideoAdapter)
TextView titlePageVideoAdapter;
@InjectView(R.id.img_PageVideoAdapter)
ImageView imgPageVideoAdapter;
@InjectView(R.id.fl_PageVideoAdapter)
FrameLayout flPageVideoAdapter;
@InjectView(R.id.web)
WebView web;
@SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"})
public MyViewHolder(View itemView) {
super(itemView);
ButterKnife.inject(this, itemView);
titlePageVideoAdapter.setTypeface(AppClass.typeface_roboto_regular);
LinearLayout.LayoutParams layoutParamsOne = new LinearLayout.LayoutParams(metrics.widthPixels, (metrics.heightPixels * 340)/800);
flPageVideoAdapter.setLayoutParams(layoutParamsOne);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setDomStorageEnabled(true);
web.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (web != null) {
web.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
}
super.onPageFinished(view, url);
}
});
web.addJavascriptInterface(this, "MyApp");
}
@JavascriptInterface
public void resize(final float height) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
web.setLayoutParams(new FrameLayout.LayoutParams(activity.getResources().getDisplayMetrics().widthPixels, (int) (height * activity.getResources().getDisplayMetrics().density)));
}
});
}
}
}
您可以更新任何示例代码...问题是清楚的,但如果我们看到您的代码,我们可以解决它...更新您的代码有问题 – MLN
这里是我的适配器类... –
我解决了它通过重置RecyclerView的onDestroyView方法的片段 –