2016-08-08 2 views
3

내 recyclerview에 3 가지 유형의 itemview가 있으며 마지막에는 webview가 가득합니다. 내가 recyclerview의 행인 webview를 클릭하면, recyclerview가 위로 스크롤됩니다. 이 문제를 어떻게 해결할 수 있습니까? recyclerview의 웹보기가 제대로 작동하지 않습니다.

는 웹보기를 containts 내 레이아웃입니다

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/webView"> 
</WebView> 

어댑터 :

public class HomePageAdapter extends  RecyclerView.Adapter<RecyclerView.ViewHolder> { 

    private String htmlContent; 
    private ArrayList<Slider> homePageSliders; 
    private ArrayList<HomePageItem> homePageItems; 

    private final int VIEW_SLIDER = 0; 
    private final int VIEW_HOMEPAGEITEM = 1; 
    private final int VIEW_HOMEPAGEHTML = 2; 


    private OnItemClickCallBack<HomePageItem> callBack; 

    public HomePageAdapter(ArrayList<Slider> homePageSliders, ArrayList<HomePageItem> homePageItems, String htmlContent, OnItemClickCallBack<HomePageItem> callBack) 
    { 
     this.homePageSliders = homePageSliders; 
     this.homePageItems = homePageItems; 
     this.htmlContent  = htmlContent; 
     this.callBack  = callBack; 

    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     if(viewType == VIEW_SLIDER) { 
      return new HomePageSliderHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.row_homepage_slider, parent, false)); 
     } 
     else if(viewType == VIEW_HOMEPAGEITEM) 
     { 
      return new HomePageItemHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.row_homepage_item, parent, false)); 

     } 
     else 
     { 
      return new HomePageHtmlContentHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.row_homepage_html, parent, false)); 
     } 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

     if(holder instanceof HomePageSliderHolder) 
     { 
      HomePageSliderHolder viewHolder = (HomePageSliderHolder) holder; 
      viewHolder.setViewPagerAdapter(this.homePageSliders); 
     } 
     else if(holder instanceof HomePageItemHolder) 
     { 
      HomePageItemHolder viewHolder = (HomePageItemHolder) holder; 

      int newPosition = position -1; 
      final HomePageItem homePageItem = this.homePageItems.get(newPosition); 

      viewHolder.setImagePath(homePageItem); 
      viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        callBack.onItemClick(homePageItem); 
       } 
      }); 
     } 
     else 
     { 
      HomePageHtmlContentHolder viewHolder = (HomePageHtmlContentHolder) holder; 
      viewHolder.setHtml(htmlContent); 
      viewHolder.setWebViewClickListener(); 
     } 
    } 

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

    @Override 
    public int getItemViewType(int position) { 

     if(position == 0) 
     { 
      return VIEW_SLIDER; 
     } 
     else if(position < homePageItems.size()) 
     { 
      return VIEW_HOMEPAGEITEM; 
     } 
     else 
     { 
      return VIEW_HOMEPAGEHTML; 
     } 

    } 
} 

웹보기를 클릭 리스너 : 다음 HTML 응답을 조사 때이 있음을 깨달았다

public void setWebViewClickListener() 
    { 
     this.webView.setWebViewClient(new WebViewClient(){ 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       Crashlytics.log(Log.ASSERT, "url : ", url); 
       return true; 
      } 
     }); 
    } 

답변

0

리디렉션 URL에 어떤 호스트도 없습니다 (예 : google : //). 그런 다음 호스트를 포함하여 그것을 대체하고 그것은 매력처럼 작동합니다.

관련 문제