我使用了名为“ IntruderShanky / SectionedRecyclerView”的分段回收器视图库。
使用该库,我已经成功添加了带有子项的部分,但是问题是我必须在每10个项之后添加广告。
假设我有5个部分,每个部分有10个孩子,即
void section_item_adder()
{
for (int j=0;j<5; j++) {
for (int i = 0; i < 10; i++) {
childList.add(new Child(Section_filepath, Section_filename, false, FileSize_Check));
}
sectionHeaders.add(new SectionHeader(childList, "Group " + section_counter + "", section_counter + 1));
}
}
对于子项,我将子类对象作为列表传递,但是我应该如何将原生广告作为子项传递给子节。
public static final int ITEM_PER_AD = 10;
void SetAdsInAdapter()
{
for(int i = 0; i < sectionHeaders.size();i+= ITEM_PER_AD)
{
final AdView adView = new AdView (MainActivity.this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(NATIVE_AD_ID);
// sectionHeaders.add(new SectionHeader(childList, "" ,section_counter+1));
// adapterRecycler.a
sectionHeaders.add(new SectionHeader(section_counter+1));
}
}
答案 0 :(得分:0)
这可以使用getItemViewType()方法完成。请注意onCreateViewHolder()中的viewType参数。
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public final int ADS_VIEW_TYPE = 0;
public final int ITEM_VIEW_TYPE = 1;
class ViewHolder0 extends RecyclerView.ViewHolder {
...
public ViewHolder0(View itemView){
...
}
}
class ViewHolder2 extends RecyclerView.ViewHolder {
...
public ViewHolder2(View itemView){
...
}
@Override
public int getItemViewType(int position) {
// add ads viewType at each 10th position
if(position % 10 == 0){
return ADS_VIEW_TYPE;
}
return ITEM_VIEW_TYPE;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case ADS_VIEW_TYPE: return new ViewHolder0(...);
case ITEM_VIEW_TYPE: return new ViewHolder2(...);
...
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
case 0:
ViewHolder0 viewHolder0 = (ViewHolder0)holder;
...
break;
case 2:
ViewHolder2 viewHolder2 = (ViewHolder2)holder;
...
break;
}
}
}