2017-10-09 16 views
0

私はthisチュートリアルに従ってカードを表示し、Tinderのようなスワイプ機能を統合しています。CardViewにランダムに広告を表示するにはどうすればいいですか?

中間の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です:

は、ここでのコードだ今私は、スタック内ではなく、3枚のカードの前にしていない7枚のカードの後に​​ランダムにこれらのカードを見せたい

<?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> 

は、ここに私が試したものです:このコードは、ランダムに広告を含むカードを見せているが、それは私のニーズに応じて表示されていないと、このカードも第一カードの後に​​表示されている

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枚のカードではないことを確認するにはどうすればよいですか。

+0

私が正しくあなたの質問を理解している場合は、(3が最小であることと、7が最大である)3と7の間の数字をしたいです。私の答え[here](https://stackoverflow.com/a/21049922/2649012)によると、式は次のようになります。 'final int random = Random.nextInt((7 - 3)+ 1)+ 3;'最終的なint random = Random.nextInt((4)+ 1)+ 3; ' –

+0

@ModularSynth 3から7までの範囲の乱数を得る方法を得ました。私が知りたいのは、 'mSwipeView.addView(新しいAdCards(mContext、mSwipeView));を表示するために使用するアルゴリズムです。質問に記載されているように3枚のカードの前ではなく、7枚のカードの後ではありません。私はあなたがそれを得たと思う。 –

+0

次に、nextIntロジックを要求していません。 SwipeViewカスタムコントロールを管理して、その後のロジックに従う方法を尋ねています。しかし、私はこのTinderSwipeについて何も知らない。 –

答えて

0

あなたは何ができるか、それ以前にから入れるべきカードを知っていれば 1. 2.カードのスタックを作成しているが、それはしなければならない場合、ランダムなテストを行うそして、最初の二つの非アドイン・カードに 3を入れて追加カードを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; 
} 
+0

これにより、カウントが増加するとadViewの表示が停止します。広告を通常の3枚ごとに表示するのではなく、通常の7枚ごとに表示するのではなく、無作為に表示します。 –

+0

参照先:https://github.com/janishar/Tutorials/tree/master/RandomPromotionalCards –

関連する問題