我正在适配器中使用此代码
How to place Admob Native Advanced Ads in recycler view android?
发生此问题
但是我想要这样的结果
除了我的代码外,我正在使用此公式将商品放置在“回收者”视图中。
@Override
public int getItemViewType(int position) {
if (position!=0 && position%4 == 0) {
return AD_TYPE;
}
return CONTENT_TYPE;
}
@Override
public int getItemCount() {
return mlistItems.size();
}
完整的适配器代码
public class CenterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private RecyclerItemClickListener listener;
private List<list_item_center> mlistItems;
private Context mcontext;
private static final int AD_TYPE = 2;
private static final int CONTENT_TYPE = 1;
public CenterAdapter(List<list_item_center> listItems, Context context, RecyclerItemClickListener listener) {
mlistItems = listItems;
mcontext = context;
this.listener = listener;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
}
@Override
public int getItemViewType(int position) {
if (position != 0 && position % 4 == 0) {
return AD_TYPE;
}
return CONTENT_TYPE;
}
@Override
public int getItemCount() {
return mlistItems.size();
}
}
答案 0 :(得分:1)
由于getItemCount()
,您仍在返回相同的ArrayList
的大小。这就是为什么该项目被广告layoutType
覆盖的原因。
更好的方法是在条件为position!=0 && position%4 == 0
的情况下,事先将广告项插入列表中。
这样,您不必管理或计算onBindViewHolder
中列表中的项目位置。另外,您不必计算itemCount
内的getItemCount()
。