简体   繁体   English

原生广告 Admob 到 Android 中的自定义列表适配器

[英]Native Ad Admob to Custom List Adapter in Android

I'm struggling to find a way to add a native ad within my app on Android.我正在努力寻找一种方法来在我的 Android 应用程序中添加原生广告。

MainActivity Class:主要活动 Class:

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab1, container, false);

        final String[] numbers = {"one","two", "", "three", "four", "five","six","seven" "eight","nine", "ten" "eleven","twelve", "thirteen"};


        Integer[] images = {0,1,2,3,4,5,6,7,8,9,10,11,12,13
        };

        CustomListAdapter adapter=new CustomListAdapter(this.getActivity(), mobileArray, images);

        NativeExpressAdView adView = (NativeExpressAdView) rootView.findViewById(R.id.adView);
        AdRequest request = new AdRequest.Builder().build();
        adView.loadAd(request);

        list=(ListView) rootView.findViewById(R.id.list_view);
        list.setAdapter(adapter);

CustomListAdapter Class:自定义列表适配器 Class:

public class CustomListAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] numbers;
    private final Integer[] imgid;

    public CustomListAdapter(Activity context, String[] numbers, Integer[] imgid) {
        super(context, R.layout.listv, itemname);
        // TODO Auto-generated constructor stub

        this.context=context;
        this.numbers=numbers;
        this.imgid=imgid;
    }

    public View getView(int position,View view,ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView=inflater.inflate(R.layout.listv, null,true);

        NativeExpressAdView adView = (NativeExpressAdView) rowView.findViewById(R.id.adView);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.number);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imgid);
        TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);


        txtTitle.setText(numbers[position]);
        imageView.setImageResource(imgid[position]);
        extratxt.setText("Number: "numbers[position]);

        return rowView;

    };
}

I want to add the native add within a particular index in array, ideally where it shows "".我想在数组中的特定索引内添加本机添加,最好是显示“”的位置。 I'm trying to add the adView into the adapter but unsure how to do this.我正在尝试将 adView 添加到适配器中,但不确定如何执行此操作。

Edit:编辑:

listv layout:列表布局:

<?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="match_parent"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imgid"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:padding="5dp" />
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:padding="2dp"
            android:textColor="#4CBE99" />
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"/>


    </LinearLayout>

</LinearLayout>


<com.google.android.gms.ads.NativeExpressAdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:layout_gravity="center"
    ads:adSize="345x80"
    ads:adUnitId="ca-app-pub-3940256099942544/2793859312"></com.google.android.gms.ads.NativeExpressAdView>

You can try like this,你可以这样试试

public class CustomListAdapter extends ArrayAdapter<String> {


    private NativeExpressAdView adView;

    private NativeExpressAdView getAddView() {
        if (adView != null) {
            return adView;
        }
        adView = new NativeExpressAdView(context);

        adView.setAdUnitId("[your unit id]");
        adView.setAdSize(new AdSize(AdSize.FULL_WIDTH, 80));

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        adView.setLayoutParams(layoutParams);
        AdRequest request = new AdRequest.Builder().build();
        adView.loadAd(request);

        return adView;
    }

    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.layout_add, null, true);

//        NativeExpressAdView adView = (NativeExpressAdView) rowView.findViewById(R.id.adView);

        LinearLayout linearLayout = (LinearLayout) rowView.findViewById(R.id.addView);

        linearLayout.removeAllViews();
        TextView txtTitle = (TextView) rowView.findViewById(R.id.number);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imgid);
        TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);


        txtTitle.setText(numbers[position]);
        imageView.setImageResource(imgid[position]);
        extratxt.setText("Number: " + numbers[position]);

        if (position == 2) {
            linearLayout.addView(getAddView());
            linearLayout.setVisibility(View.VISIBLE);
        } else {
            linearLayout.removeAllViews();
            linearLayout.setVisibility(View.GONE);
        }

        return rowView;

    }

    ;
}

Layour xml布局 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imgid"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:padding="5dp"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:padding="2dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#4CBE99"/>

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"/>
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/addView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"></LinearLayout>
</LinearLayout>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM