github.com/janishar/Tutorials/tree/master/...

дуюэто учебник, чтобы показать карты и интегрировать 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;
}

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

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

 Fantômas09 окт. 2017 г., 14:59
Тогда вы не просите следующую логику. Вы спрашиваете, как управлять пользовательским элементом управления SwipeView, чтобы следовать логике, которую вы ищете. Но я ничего не знаю об этом TinderSwipe.
 Fantômas09 окт. 2017 г., 14:49
Если я правильно понял ваш вопрос, вам нужно число от 3 до 7 (3 - минимум, а 7 - максимум). Согласно моему ответу,Вотформула будет такой:final int random = Random.nextInt((7 - 3) + 1) + 3; или упрощенный по скорости (на выполнение меньше одного):final int random = Random.nextInt((4) + 1) + 3;
 Fantômas09 окт. 2017 г., 15:03
Но вам уже удалось найти случайные числа. Теперь все, что вам нужно сделать, это выяснить, как использовать их в логическом потоке вашего приложения, если это имеет смысл для вас.
 Hammad Nasir09 окт. 2017 г., 15:00
@ModularSynth Нет. Пожалуйста, смотрите вопрос. Я пытаюсь показать это представление, используя случайные числа, в которых я пытался показать это не перед 3 картами и не после 7 карт.
 Hammad Nasir09 окт. 2017 г., 14:55
@ModularSynth Я получил, как получить случайные числа в диапазоне от 3 до 7. Что я хочу знать, это алгоритм, который я должен использовать, чтобы показатьmSwipeView.addView(new AdCards(mContext, mSwipeView)); случайно не до 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;
}
 Janishar Ali22 окт. 2017 г., 22:48
 Hammad Nasir16 окт. 2017 г., 22:37
это перестало бы показывать adView при увеличении числа 7. Я хочу показывать объявления случайным образом, но не перед каждыми 3 обычными карточками и не после каждых 7 обычных карточек.

Ваш ответ на вопрос