Как показывать Картинки, содержащие объявления случайным образом, но не до 3-х карт, а не после 7 карт?

Я следую этому учебному пособию, чтобы показывать карты и интегрировать функцию прокрутки с помощью Tinder.

В промежутке между cards я хочу показывать рекламу, и для этого я использую AdMob.

Здесь код:

@Layout(R.layout.ad_cards_view)
public class AdCards {

    @View(R.id.adView)
    NativeExpressAdView nativeExpressAdView;

    private Context mContext;
    private SwipePlaceHolderView mSwipeView;

    public AdCards (Context context, SwipePlaceHolderView swipePlaceHolderView) {
        mContext = context;
        mSwipeView = swipePlaceHolderView;
    }

    @Resolve
    private void onResolved() {
        AdRequest request = new AdRequest.Builder()
                .addTestDevice("***")
                .addTestDevice("***")
                .build();
        nativeExpressAdView.setVideoOptions(new VideoOptions.Builder()
                        .setStartMuted(true)
                .build());
        nativeExpressAdView.loadAd(request);
    }

}

Здесь ad_cards_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="350dp"
    android:layout_height="395dp"
    android:layout_gravity="center"
    android:layout_marginTop="35dp">

    <android.support.v7.widget.CardView
        android:orientation="vertical"
        android:background="@android:color/white"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        app:cardCornerRadius="7dp"
        app:cardElevation="4dp">

    <com.google.android.gms.ads.NativeExpressAdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        ads:adUnitId="ca-app-pub-xxx"
        ads:adSize="320x300">
    </com.google.android.gms.ads.NativeExpressAdView>

    </android.support.v7.widget.CardView>

</RelativeLayout>

Теперь я хочу показать эти карты случайным образом в стеке, но не до 3-х карт, а не после 7 карт.

Вот что я пробовал:

rand = new Random();
random = rand.nextInt(8-3) + 3;
count = rand.nextInt(8-3) + 3;

mSwipeView.addView(new Cards(mContext, profile, mSwipeView));
if (count >= random) {
    mSwipeView.addView(new AdCards(mContext, mSwipeView));
    random = rand.nextInt(8-3) + 3;
    count = rand.nextInt(8-3) + 3;
}

хотя этот код показывает карты, содержащие объявление случайным образом, но он не отображается в соответствии с моими потребностями, и эта карта появляется даже после первой карты.

Как я могу убедиться, что это объявление, содержащее карту, появляется случайным образом, но не до 3-х карт, а не после 7 карт.

Ответ 1

Если вам известны карты, которые нужно положить раньше, то что вы можете сделать, это  1. создать стопку карт  2. поместите первые две незакрепленные карты  3. Затем сделайте случайный тест, если он должен поместить дополнительную карту для третьего, положив карту без добавления.  4. сделайте эту карточку с испытанием до 7 карт.

Пример:

boolean atLeastOneAddPut = false;

int count = 1;
for(Data data: DataArray){
    if(count > 2 && count < 8 && shouldPutAdd()){
        mSwipeView.add(new AddView());
        count++;
    }
    mSwipeView.add(new NonAddView(data));
    count++;
}

private boolean shouldPutAdd(){
    //generate random 0 and 1
    int random;
    ...
    return random == 1;
}