第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

getItemViewType 僅在 onBindViewHolder 中返回

getItemViewType 僅在 onBindViewHolder 中返回

月關(guān)寶盒 2022-09-07 17:07:50
我有一個RecyclerView適配器,它應(yīng)該根據(jù)返回的內(nèi)容膨脹4種不同的布局。getItemViewType觸發(fā)視圖時應(yīng)返回每個視圖類型,但問題是其中一個類型不在 onCreateViewHolder 中返回,而僅在 onBindViewHolder 中返回,從而阻止創(chuàng)建 ViewHolder。另外,我向您保證只返回正確的數(shù)據(jù)大小,因此這應(yīng)該不是問題所在。getItemCount我認(rèn)為如果視圖類型可以成功返回,那么它們在調(diào)用時應(yīng)該會顯示在兩個方法中。所以這個問題對我來說沒有任何意義。@NonNull@Overridepublic HorizontalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {    Log.d(SLIDER_TAG, "onCreateViewHolder: " + getItemViewType(i));    View cardView = LayoutInflater.from(parent.getContext()).inflate(                    getItemViewType(i) == 0 ? R.layout.item_category_slider_viewed                    : getItemViewType(i) == 1 ? R.layout.item_category_slider_added                    : getItemViewType(i) == 2 ? R.layout.item_category_slider_browse_all                    : R.layout.item_category_slider_regular            , parent, false);    return new HorizontalViewHolder(cardView, context);}記錄時,只有 0、1 和 3 會在 內(nèi)部返回,但不會返回 2。getItemViewType(i)onCreateViewHolder但奇怪的是,在 內(nèi)部記錄該日志會返回從 0 到 3 的所有視圖類型。為什么會這樣呢?onBindViewHolder編輯RecyclerView顯示一個水平的卡片列表(約20個),而除最后一個卡片(空白)之外的所有卡片都使用相同的布局,因此在此特定列表案例中僅使用2種視圖類型,我們現(xiàn)在可以忽略其他2種類型。這里最后一張牌沒有充氣,因此從未在.我懷疑雖然前許多卡使用相同的布局進(jìn)行膨脹,但布局不會再次創(chuàng)建,因此它假設(shè)最后一張卡使用相同的布局。onCreateViewHolder
查看完整描述

1 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個贊

問題可能是因?yàn)槟谥匦聶z查具有 內(nèi)部的項(xiàng)ViewType。您不應(yīng)該這樣做,因?yàn)橐呀?jīng)從其參數(shù)中為您提供了 itemViewType。您應(yīng)該使用開關(guān)大小寫,而不是使您的代碼更具可讀性。getItemViewType(i));onCreateViewHolderonCreateViewHolderif ? :


因此,請將代碼更改為如下所示的內(nèi)容:


@Override

public HorizontalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {


    int layoutId;

    switch(viewType) {

       case 0:

         layoutId = R.layout.item_category_slider_viewed;

       break;

       case 1:

         layoutId = R.layout.item_category_slider_added;

       break;

       case 2:

         layoutId = R.layout.item_category_slider_browse_all;

       break;

       default:

         layoutId = R.layout.item_category_slider_regular;


    }


    View cardView = LayoutInflater.from(parent.getContext()).inflate(

                    layoutId, parent, false);


    return new HorizontalViewHolder(cardView, context);

}


查看完整回答
反對 回復(fù) 2022-09-07
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號