gpt4 book ai didi

android - RecyclerView 和自定义项目类型

转载 作者:搜寻专家 更新时间:2023-11-01 08:40:40 26 4
gpt4 key购买 nike

我有一个 RecyclerView,里面装满了固定大小的集合中的项目。

我想添加带有广告的 View ,例如,每 3 个项目:

@Override
public int getItemViewType(int position) {
return position % 3 == 0 ? TYPE_ADS : TYPE_ITEM;
}



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

switch (viewType) {
case ItemTypes.TYPE_ITEM:
view = layoutInflater.inflate(R.layout.view_news_entries_item, parent, false);
break;

case ItemTypes.TYPE_ADS:
view = layoutInflater.inflate(R.layout.view_ads_item, parent, false);
break;

default:
throw new IllegalArgumentException("Invalid item type: " + viewType);
}

return new ViewHolder(view);
}

但是使用这样的方法,我应该如何实现 getItemCount() 和 onBindViewHolder() 呢?我的意思是元素数量将与收藏中的真实元素数量不同,位置也不相同,那么如何计算它们?

最佳答案

对于 OnBindViewHolder:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder.getItemViewType() == TYPE_ADS) {
// DO AD THINGS
} else {
// DO NORMAL ITEM THINGS
}
}

我相信 getItemCount() 用于记录 RecyclerView 内部的实际查看次数(因此显示的所有项目包括广告。)您可能需要编写一个新方法来获取非广告项目的数量:

public int getRealItemCount() {
int ads = getItemCount() / 3;
return getItemCount() - ads;
}

关于android - RecyclerView 和自定义项目类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com