Android 关于RecyclerView中的WebView?
我在RecyclerView的第一项中使用WebView,WebView加载url包括Android 关于RecyclerView中的WebView?,android,webview,Android,Webview,我在RecyclerView的第一项中使用WebView,WebView加载url包括图像或视频,当我单击图像或视频时,RecyclerView将滚动到顶部,WebView将继续加载,视频将播放,我如何解决它 一些代码: public class NewsDetailAdapter extends PageRecyclerAdapter<NewsDetailInfo, ViewHolder> { private static final boolean DEBUG = true;
图像
或视频
,当我单击图像
或视频
时,RecyclerView将滚动到顶部,WebView将继续加载,视频将播放,我如何解决它
一些代码:
public class NewsDetailAdapter extends PageRecyclerAdapter<NewsDetailInfo, ViewHolder> {
private static final boolean DEBUG = true;
public static final int VIEW_TYPE_WEB = 1;
public static final int VIEW_TYPE_COMMENT_TITLE = 2;
public static final int VIEW_TYPE_COMMENT = 3;
private XWebView mWebView;
private OnItemClickListener mItemClickListener;
public NewsDetailAdapter(Context context, XWebView webView, List<NewsDetailInfo> data, OnItemClickListener listener, OnErrorClickListener errorListener) {
super(context, data, errorListener);
mWebView = webView;
mItemClickListener = listener;
}
@Override
public int getListItemViewType(int position) {
return getItem(position).itemType;
}
@Override
public ViewHolder onCreateHolder(LayoutInflater inflater, ViewGroup parent,
int viewType) {
switch (viewType) {
case VIEW_TYPE_WEB:
return new WebViewHolder(inflater.inflate(R.layout.layout_webview, parent, false));
case VIEW_TYPE_COMMENT_TITLE:
return new SimpleTextHolder(inflater.inflate(R.layout.layout_comment_title, parent, false));
case VIEW_TYPE_COMMENT:
return new ListItemHolder(inflater.inflate(R.layout.list_item_comment, parent, false));
}
return null;
}
@Override
public void onBindHolder(ViewHolder viewHolder, final int position) {
if (viewHolder instanceof SimpleTextHolder) {
SimpleTextHolder holder = (SimpleTextHolder) viewHolder;
holder.mText.setText(getItem(position).text);
} else if (viewHolder instanceof ListItemHolder) {
ListItemHolder holder = (ListItemHolder) viewHolder;
holder.mUsername.setText(TextUtils.isEmpty(getItem(position).user.username) ? "匿名" : getItem(position).user.username);
holder.mCommentContent.setText(getItem(position).content);
holder.mPublishTime.setText(TimeUtils.parseToHumnanizeTime(getItem(position).publishTime));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(getItem(position));
}
}
});
}
}
class WebViewHolder extends ViewHolder {
public WebViewHolder(View itemView) {
super(itemView);
FrameLayout frameLayout = (FrameLayout) itemView.findViewById(R.id.web_view_container);
frameLayout.addView(mWebView);
**itemView.requestFocus();** // add this code will resolve it;
}
}
class SimpleTextHolder extends ViewHolder {
TextView mText;
public SimpleTextHolder(View itemView) {
super(itemView);
mText = (TextView) itemView.findViewById(R.id.title);
}
}
class ListItemHolder extends ViewHolder {
ImageView mImageView;
TextView mUsername;
TextView mCommentContent;
TextView mPublishTime;
public ListItemHolder(View itemView) {
super(itemView);
mImageView = (ImageView) itemView.findViewById(R.id.portrait);
mUsername = (TextView) itemView.findViewById(R.id.username);
mCommentContent = (TextView) itemView.findViewById(R.id.comment_content);
mPublishTime = (TextView) itemView.findViewById(R.id.publish_time);
}
}
public interface OnItemClickListener {
void onItemClick(NewsDetailInfo info);
}
公共类NewsDetailAdapter扩展了PageRecyclerAdapter{
私有静态最终布尔调试=true;
公共静态最终int视图类型WEB=1;
公共静态最终整型视图\类型\注释\标题=2;
公共静态最终int视图类型注释=3;
私有XWebView-mWebView;
私有的McClickListener和mItemClickListener;
public NewsDetailAdapter(上下文上下文、XWebView webView、列表数据、OnItemClickListener侦听器、OnErrorClickListener errorListener){
超级(上下文、数据、错误侦听器);
mWebView=webView;
mItemClickListener=监听器;
}
@凌驾
public int getListItemViewType(int位置){
返回getItem(position).itemType;
}
@凌驾
public ViewHolder onCreateHolder(布局、充气机、视图组父级、,
int视图类型){
开关(视图类型){
案例视图\类型\网站:
返回新的WebViewHolder(充气器。充气(R.layout.layout_webview,父项,false));
案例视图\类型\注释\标题:
返回新的SimpleTextHolder(充气器。充气(R.layout.layout_comment_title,parent,false));
案例视图\类型\注释:
返回新的ListItemHolder(充气器。充气(R.layout.list_item_comment,parent,false));
}
返回null;
}
@凌驾
public void onBindHolder(视图持有者视图持有者,最终int位置){
if(SimpleTextHolder的viewHolder实例){
SimpleTextHolder=(SimpleTextHolder)视图持有者;
holder.mText.setText(getItem(position.text));
}else if(ListItemHolder的viewHolder实例){
ListItemHolder=(ListItemHolder)viewHolder;
holder.mUsername.setText(TextUtils.isEmpty)(getItem(position.user.username)?”匿名" : getItem(position.user.username);
holder.mCommentContent.setText(getItem(position.content));
holder.mppublishtime.setText(TimeUtils.parseToHumnanizeTime(getItem(position.publishTime));
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mItemClickListener!=null){
onItemClick(getItem(position));
}
}
});
}
}
类WebViewHolder扩展了ViewHolder{
公共WebViewHolder(查看项目视图){
超级(项目视图);
FrameLayout=(FrameLayout)itemView.findViewById(R.id.web\u视图\u容器);
frameLayout.addView(mWebView);
**itemView.requestFocus();**//添加此代码将解决此问题;
}
}
类SimpleTextHolder扩展了ViewHolder{
文本视图多行文字;
公共SimpleTextHolder(视图项视图){
超级(项目视图);
mText=(TextView)itemView.findViewById(R.id.title);
}
}
类ListItemHolder扩展了ViewHolder{
图像视图;
TextView mUsername;
文本视图mCommentContent;
文本视图MPPublishTime;
公共ListItemHolder(查看项目视图){
超级(项目视图);
mImageView=(ImageView)itemView.findViewById(R.id.肖像);
mUsername=(TextView)itemView.findViewById(R.id.username);
mCommentContent=(TextView)itemView.findViewById(R.id.comment\u content);
mppublishTime=(TextView)itemView.findViewById(R.id.publish\u time);
}
}
公共接口侦听器{
void onItemClick(newsdailinfo);
}
}你能分享一些代码吗?还有一些屏幕截图会非常有用。代码是正常的,webview显示在一个屏幕上。解决它。在onCreateHolder中执行itemView.requestFocus();发布答案,然后发布非常糟糕的问题。我不理解这个问题;你说它现在已经修复,但没有提供任何答案。