All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mopub.nativeads.PrebidNativeAdRenderer Maven / Gradle / Ivy

The newest version!
package com.mopub.nativeads;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.prebid.mobile.PrebidNativeAdEventListener;

import java.util.WeakHashMap;

public class PrebidNativeAdRenderer implements MoPubAdRenderer {

    private final ViewBinder viewBinder;
    private final WeakHashMap viewHolderMap;
    private final PrebidNativeAdEventListener listener;

    public PrebidNativeAdRenderer(
            @NonNull ViewBinder viewBinder,
            @Nullable PrebidNativeAdEventListener listener
    ) {
        this.viewBinder = viewBinder;
        this.viewHolderMap = new WeakHashMap<>();
        this.listener = listener;
    }

    @Override
    public boolean supports(@NonNull BaseNativeAd baseNativeAd) {
        if (baseNativeAd instanceof PrebidNativeAdWrapper) {
            PrebidNativeAdWrapper adWrapper = (PrebidNativeAdWrapper) baseNativeAd;
            adWrapper.setListener(listener);
        }
        return baseNativeAd instanceof PrebidNativeAdWrapper;
    }

    @NonNull
    @Override
    public View createAdView(
            @NonNull Context context,
            @Nullable ViewGroup parent
    ) {
        int layoutId = viewBinder.layoutId;
        return LayoutInflater
                .from(context)
                .inflate(layoutId, parent, false);
    }

    @Override
    public void renderAdView(
            @NonNull View view,
            @NonNull PrebidNativeAdWrapper adWrapper
    ) {
        StaticNativeViewHolder viewHolder = viewHolderMap.get(view);
        if (viewHolder == null) {
            viewHolder = StaticNativeViewHolder.fromViewBinder(view, viewBinder);
            viewHolderMap.put(view, viewHolder);
        }

        update(viewHolder, adWrapper);
        makeViewVisible(viewHolder);
    }


    private void update(
            @NonNull final StaticNativeViewHolder viewHolder,
            @NonNull final PrebidNativeAdWrapper adWrapper
    ) {
        NativeRendererHelper.addTextView(viewHolder.titleView, adWrapper.getTitle());
        NativeRendererHelper.addTextView(viewHolder.textView, adWrapper.getText());
        NativeRendererHelper.addTextView(viewHolder.callToActionView, adWrapper.getCallToAction());
        NativeImageHelper.loadImageView(adWrapper.getMainImageUrl(), viewHolder.mainImageView);
        NativeImageHelper.loadImageView(adWrapper.getIconImageUrl(), viewHolder.iconImageView);
        adWrapper.registerActionView(viewHolder.callToActionView);
    }

    private void makeViewVisible(
            @NonNull final StaticNativeViewHolder viewHolder
    ) {
        if (viewHolder.mainView != null) {
            viewHolder.mainView.setVisibility(View.VISIBLE);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy