同一個(gè)recycelview實(shí)現(xiàn)新聞數(shù)據(jù)和廣告數(shù)據(jù)同時(shí)展示


具體方法在demo中

主要是實(shí)現(xiàn)思路看代碼

@Override

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

? ? if (viewType == NO_IMAGES) {

? ? ? ? View view = LayoutInflater.from(context).inflate(R.layout.item_home_news_details_no_images, parent, false);

? ? ? ? return new ViewHolders(view);

? ? } else if (viewType == AD) {

? ? ? ? View view = LayoutInflater.from(context).inflate(R.layout.item_ad, parent, false);

? ? ? ? return new ViewHolderAd(view);

? ? } else {

? ? ? ? View view = LayoutInflater.from(context).inflate(R.layout.item_home_news_details_no_images, parent, false);

? ? ? ? return new ViewHolders(view);

? ? }

}

@Override

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

? ? if (holder instanceof ViewHolders) {

? ? ? ? int pos = getRealPosition(holder);

? ? ? ? ViewHolders mViewHolders = (ViewHolders) holder;

? ? ? ? mViewHolders.setItems(name[pos]);

? ? ? ? mViewHolders.refreshView();

? ? } else if (holder instanceof ViewHolderAd) {

? ? ? ? ViewHolderAd holderAd = (ViewHolderAd) holder;

? ? ? ? holderAd.setItems(imgs[(position - 1) / 3]);

? ? ? ? holderAd.refreshView();

? ? }

}

int getRealPosition(RecyclerView.ViewHolder holder) {

? ? int position = holder.getLayoutPosition();

? ? int i = position / 3;

? ? if (i < imgs.length) {

? ? ? ? return position - i;

? ? } else {

? ? ? ? return position;

? ? }

}

@Override

public int getItemCount() {

? ? return getContentItemCount();

}

/**

* 判斷當(dāng)前item是否是HeadView

*

* @param position 因?yàn)楹臀迩笥嗨缘?位也會(huì)是廣告位 所以需要給他位置+1

* @return

*/

public boolean isHeaderView(int position) {

? ? return (position + 1) % 3 == 0 && position /3 < imgs.length;

}

public int getContentItemCount() {

? ? return name == null ? 0 : name.length;

}

@Override

public int getItemViewType(int position) {

? ? if (position == 0) {

? ? ? ? return NO_IMAGES;

? ? }

? ? if (isHeaderView(position)) {

? ? ? ? return AD;

? ? } else {

? ? ? ? return NO_IMAGES;

? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容