当webView作为recyclerView的一个布局,导致点击webView返回顶部的问题。

public class ArticleAdapter extends RecyclerView.Adapter {

    public static final int HEADER_VIEW = 111;
    public static final int ITEM_VIEW = 222;

    private String mWebUrl;
    private List<String> mList = new ArrayList<>();

    public String getWebUrl() {
        return mWebUrl;
    }

    public void setWebUrl(String webUrl) {
        mWebUrl = webUrl;
    }

    public List<String> getList() {
        return mList;
    }

    public void setList(List<String> list) {
        if (list != null) {
            mList.clear();
            addList(list);
        }
    }

    public void addList(List<String> list) {
        if (list != null) {
            mList.addAll(list);
            notifyDataSetChanged();
        }
    }

    @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return HEADER_VIEW;
        } else {
            return ITEM_VIEW;
        }
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == HEADER_VIEW) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_article_header, parent, false);
            HeaderViewHolder holder = new HeaderViewHolder(view, parent.getContext());
            return holder;
        } else {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_article_normal, parent, false);
            return new ItemViewHolder(view);
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof HeaderViewHolder) {
            ((HeaderViewHolder) holder).bindData(mWebUrl);
        } else {
            ((ItemViewHolder) holder).binData(mList.get(position - 1));
        }
    }

    @Override
    public int getItemCount() {
        return mList.size() + 1;
    }

    /**
     * 文章详情
     */
    class HeaderViewHolder extends RecyclerView.ViewHolder {

        private View mView;
        private Context mContext;
        private WebViewClient mWebViewClient;

        public HeaderViewHolder(View itemView, Context context) {
            super(itemView);
            mView = itemView;
            mContext = context;
        }

        public void bindData(String webUrl) {
            mView.requestFocus();
            WebView webView = (WebView) mView.findViewById(R.id.webView);
            setWebView(webUrl, webView);
        }
    }

    /**
     * 评论item
     */
    class ItemViewHolder extends RecyclerView.ViewHolder {

        private View mView;

        public ItemViewHolder(View itemView) {
            super(itemView);
            this.mView = itemView;
        }

        public void binData(String string) {
            TextView textView = (TextView) mView.findViewById(R.id.tv_title);
            textView.setText(string);
        }
    }

}

以上是代码,红色的为解决办法,原因是因为第一次点击需要获取触摸,第二次点击就不会返回顶部,修改自 webView in recyclerView



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值