Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于RecyclerView中的WebView?_Android_Webview - Fatal编程技术网

Android 关于RecyclerView中的WebView?

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,WebView加载url包括
图像
视频
,当我单击
图像
视频
时,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();发布答案,然后发布非常糟糕的问题。我不理解这个问题;你说它现在已经修复,但没有提供任何答案。