为什么原生高级广告从回收者视图android中删除了该商品?

时间:2020-09-28 05:27:12

标签: android android-recyclerview admob android-adapter native-ads

我正在适配器中使用此代码

How to place Admob Native Advanced Ads in recycler view android?

发生此问题

enter image description here

但是我想要这样的结果

enter image description here

除了我的代码外,我正在使用此公式将商品放置在“回收者”视图中。

    @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();
}

}

1 个答案:

答案 0 :(得分:1)

由于getItemCount(),您仍在返回相同的ArrayList的大小。这就是为什么该项目被广告layoutType覆盖的原因。 更好的方法是在条件为position!=0 && position%4 == 0的情况下,事先将广告项插入列表中。

这样,您不必管理或计算onBindViewHolder中列表中的项目位置。另外,您不必计算itemCount内的getItemCount()