Is there any way to Show Google Admob in Android Recycler View

前端 未结 1 816
情书的邮戳
情书的邮戳 2020-12-03 00:14

I want to show Ads using google Admob in my app\'s Main Activity. I have placed all code requires for showing ads by getting help from google-developers site but when I run

相关标签:
1条回答
  • 2020-12-03 00:55

    Here is complete example. I just created an example app for you.

    Main Activity

    import android.content.Context;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.Toolbar;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Main extends AppCompatActivity {
    
        public static final String TAG = Main.class.getSimpleName();
        private Context mContext;
        private List<MyListModel> mList;
        private RecyclerView mRecyclerView;
        private RecyclerView.Adapter mAdapter;
        private RecyclerView.LayoutManager mLayoutManager;
        private Toolbar toolbar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mContext = this;
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
    
            mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
            mList = new ArrayList<MyListModel>();
    
            for(int i=0;i<10;i++){
                MyListModel myString = new MyListModel();
                myString.setName(i+" - I love Paris");
                myString.setViewType(1);
                mList.add(myString);
            }
    
            //Place two Admob Ads at position index 1 and 5 in recyclerview
            MyListModel myString1 = new MyListModel();
            myString1.setViewType(2);
            mList.add(1,myString1);
    
            MyListModel myString2 = new MyListModel();
            myString2.setViewType(2);
            mList.add(5,myString2);
    
    
    
            // use a linear layout manager
            mLayoutManager = new LinearLayoutManager(this);
            mRecyclerView.setLayoutManager(mLayoutManager);
    
            // specify an adapter (see also next example)
            mAdapter = new ListAdopter(this, mList);
            mRecyclerView.setAdapter(mAdapter);
        }
    }
    

    RecyclerViewAdopter

    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdView;
    import java.util.List;
    
    public class RecyclerViewAdopter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    
        private Context mContext;
        private List<MyListModel> mList;
    
        public RecyclerViewAdopter(Context mContext, List<MyListModel> mList) {
            this.mList = mList;
            this.mContext = mContext;
        }
    
        public static class MyViewHolder extends RecyclerView.ViewHolder {
            public TextView name;
            public MyViewHolder(View view) {
                super(view);
                name = (TextView) view.findViewById(R.id.listView_name);
            }
        }
    
        public static class ViewHolderAdMob extends RecyclerView.ViewHolder {
            public AdView mAdView;
            public ViewHolderAdMob(View view) {
                super(view);
                mAdView = (AdView) view.findViewById(R.id.adView);
                AdRequest adRequest = new AdRequest.Builder()
                        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                        .build();
                mAdView.loadAd(adRequest);
            }
        }
    
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            RecyclerView.ViewHolder viewHolder = null;
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            switch(viewType){
                case 1:{
                    View v = inflater.inflate(R.layout.list_item_1, parent, false);
                    viewHolder = new MyViewHolder(v);
                    break;
                }
                case 2:{
                    View v = inflater.inflate(R.layout.list_item_admob, parent, false);
                    viewHolder = new ViewHolderAdMob(v);
                    break;
                }
            }
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    
            MyListModel model = mList.get(holder.getAdapterPosition());
    
            switch(holder.getItemViewType()){
                case 1:{
                    MyViewHolder viewHolder = (MyViewHolder) holder;
                    viewHolder.name.setText(model.getName());
                    break;
                }
                case 2:{
                    break;
                }
            }
        }
    
        @Override
        public int getItemViewType(int position) {
            return mList.get(position).getViewType();
        }
    
        @Override
        public int getItemCount() {
            return mList.size();
        }
    }
    

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        tools:context="com.kyanogen.ui.ScyllaListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="@null"
            android:scrollbarThumbVertical="@color/primary_dark"
            android:scrollbarStyle="insideInset"
            android:scrollbarSize="4dp"
            android:layout_below="@+id/toolbar"/>
    
    
    </RelativeLayout>
    

    list_item_1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">
    
        <TextView
            android:id="@+id/listView_name"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="30dp"
            android:textSize="16sp"/>
    
    </LinearLayout>
    

    list_item_admob.xml

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
    </com.google.android.gms.ads.AdView>
    

    Update 9-12-2016

    MyListModel

    public class MyListModel {
    
        private String name;
        private int viewType;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getViewType() {
            return viewType;
        }
    
        public void setViewType(int viewType) {
            this.viewType = viewType;
        }
    }
    
    0 讨论(0)
提交回复
热议问题