Android добавляет рекламные баннеры в режиме переработчика, не пропуская актуальный контент - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь добавить рекламные баннеры Facebook в режиме переработчика.Я реализовал метод, получив помощь с этого сайта ... все идет хорошо, кроме одного условия.Я показываю рекламу после каждых 2 элементов в режиме переработки. Но проблема в том, что когда я добавляю первый элемент, он не отображается в позиции 1. Баннерная реклама должна отображаться в позиции 0, а контент в позиции 1. Но этот метод фактически отображает контент впозиция предыдущего контента.

public class CarsAdapter extends RecyclerView.Adapter<CarsAdapter.MyViewHolderCar>{
private Context context;
private List<Cars> carsList;
private int AD_TYPE = 0;
private int CONTENT_TYPE = 1;
int lastPosition=-1;
private BillingHelper billingHelper;
public CarsAdapter(Context context, List<Cars> carsList) {
    this.context = context;
    this.carsList = carsList;
    billingHelper=new BillingHelper(context);
}

public Context getContext() {
    return context;
}

public void setContext(Context context) {
    this.context = context;
}
@NonNull
@Override
public MyViewHolderCar onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view;
    if(viewType==CONTENT_TYPE){
        view=LayoutInflater.from(parent.getContext()).inflate(R.layout.car_details_row,parent,false);
    }
    else {
        view = new AdView(context, context.getString(R.string.fb_banner), AdSize.BANNER_HEIGHT_50);
        float density = parent.getContext().getResources().getDisplayMetrics().density;
        int height = Math.round(AdSize.BANNER_HEIGHT_50.getHeight() * density);
        AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT,height);
        view.setLayoutParams(params);
        if (billingHelper.shouldShowAds()) ((AdView) view).loadAd();
    }
    return new MyViewHolderCar(view);
}
@Override
public int getItemViewType(int position) {
    if (position>=0&&position % 3 == 0) return AD_TYPE;
        return CONTENT_TYPE;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolderCar holder, int position) {
    if (position % 3 == 0)
        return;
    Cars note=carsList.get(position - Math.round((position / 3) + 1));
    holder.id.setText(Html.fromHtml("&#8226;"));
    holder.brandDetails.setText(note.getCarBrand());
    holder.modelDetails.setText(Integer.toString(note.getCarModel()));
    holder.plateDetails.setText(note.getCarNum());
    holder.colorDetails.setBackgroundColor(Integer.parseInt(Integer.toString(note.getCarColor())));
    AnimationsUtils.setScaleAnimation(holder.itemView);
}


@Override
public int getItemCount() {
   int count=carsList.size();
   return count+(count/3);
}
public class MyViewHolderCar extends RecyclerView.ViewHolder{
    public TextView id;
    public TextView brandDetails;
    public TextView modelDetails;
    public TextView plateDetails;
    public TextView colorDetails;
    public MyViewHolderCar(@NonNull View itemView) {
        super(itemView);
        id=itemView.findViewById(R.id.id);
        brandDetails=itemView.findViewById(R.id.brandDetails);
        modelDetails=itemView.findViewById(R.id.modelDetails);
        plateDetails=itemView.findViewById(R.id.plateDetails);
        colorDetails=itemView.findViewById(R.id.colorDetails);
    }
}

}

...