2015-06-03 25 views
0

內RecyclerView.Adapter改變主視圖的參考,我們可以改變我們把viewholder從onCreateViewHolder方法類似RecyclerView.Adapter在onBindViewHolder

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 
    View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false); 
     ViewHolder vh = new ViewHolder(mView); 
     return vh; 
    } 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { 
    if(viewHolder instanceof ViewHolder) { 
     View view = new View(mContext); 
     view.setBackGroundColor(color); 
     ViewHolder mViewHolder = (ViewHolder)viewHolder; 
     mViewHolder.mMainView = view; 
    } 
    } 
public static class ViewHolder extends RecyclerView.ViewHolder { 
    protected View insideview; 

    public ViewHolderFooter(View v) { 

     super(v); 
     insideview = v; 

    } 

} 

主視圖但它不改變主視圖,甚至不扔任何異常。 請幫我理解爲什麼它是這樣的?如果我們再次滾動瀏覽該視圖或其他內容,該視圖是否保存我們的視圖以供重用?

回答

1

回答你的問題:

難道viewholder拯救我們的看法重用,如果我們通過視圖或別的東西再滾動?

是的,ViewHolder用於「緩存」視圖類型,因此您可以在RecyclerView中重新使用和加速所有視圖實例創建。

雖然在你的代碼中存在一個小錯誤(ViewHolder命名的類中的ViewHolderFooter),但是我可以建議你閱讀這些回答得很好的問題的答案 - 我認爲這對你很有用。

How to create RecyclerView with multiple view type?

基本上,你需要實現getItemViewType()方法,讓你使用一個以上的ViewHolder的RecyclerView內。

+0

我的主要問題是我們可以在onBinderViewHolder() –

+0

中更改主視圖您不能在'onBindViewHolder()'中更改它。你必須結合使用'getItemViewType'和onBindViewHolder來實現你想要的(你必須知道視圖類型的數量)。如果這種行爲不符合您的需求,請嘗試解釋用例,以便我可以提供更好的支持 – krumikaze

相關問題