Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Связывает {@link View} c {@link NativeAd}.
- * Требования к реализации (с примерами) представлены:
- * {@link "http://www.appodeal.ru/sdk/documentation?framework=1&full=1#p_4_6"}.
- *
- * @return Экземпляр представления, {@link View}.
- */
- @NonNull
- private View bindView(@NonNull Context context, @NonNull NativeAdView nativeAdView, @NonNull NativeAd nativeAd) {
- // TextView nativeAdSign = nativeAdView.findViewById(R.id.native_ad_mark);
- // nativeAdSign.setText(context.getString(R.string.ad_mark));
- // nativeAdView.setProviderView(nativeAdSign);
- TextView nativeTitle = nativeAdView.findViewById(R.id.native_ad_title);
- nativeTitle.setText(nativeAd.getTitle());
- nativeAdView.setTitleView(nativeTitle);
- TextView nativeDescription = nativeAdView.findViewById(R.id.native_ad_body);
- nativeDescription.setEllipsize(TextUtils.TruncateAt.END);
- nativeDescription.setText(nativeAd.getDescription());
- nativeAdView.setDescriptionView(nativeDescription);
- RatingBar nativeRating = nativeAdView.findViewById(R.id.native_ad_rating);
- // В некоторых шаблонах объявлений виджет рейтинга может отсутствовать, поэтому проверяем его наличие
- if (nativeRating != null) {
- if (nativeAd.getRating() == 0) {
- nativeRating.setVisibility(View.INVISIBLE);
- } else {
- nativeRating.setVisibility(View.VISIBLE);
- nativeRating.setRating(nativeAd.getRating());
- nativeRating.setIsIndicator(true);
- nativeRating.setStepSize(0.1f);
- }
- }
- nativeAdView.setRatingView(nativeRating);
- Button nativeCta = nativeAdView.findViewById(R.id.native_ad_cta);
- nativeCta.setText(nativeAd.getCallToAction());
- nativeAdView.setCallToActionView(nativeCta);
- // Загружаем иконку с помощью Glide, т.к. загрузка средствами Appodeal SDK вызывает OOM
- if (!TextUtils.isEmpty(nativeAd.getIconUrl())) {
- ImageView iconView = nativeAdView.findViewById(R.id.native_ad_icon);
- GlideApp.with(context.getApplicationContext())
- .load(nativeAd.getIconUrl())
- .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
- .into(iconView);
- }
- View providerView = nativeAd.getProviderView(context);
- if (providerView != null) {
- // По всей видимости каждый раз возвращается один и тот же экземпляр вьюхи,
- // поэтому при биндинге ко второму объявлению у неё уже будет родитель, что вызовет падение.
- // Поэтому проверяем наличие предыдущего родителя и очищаем его.
- ViewParent parent = providerView.getParent();
- if (parent != null) {
- ((FrameLayout) parent).removeView(providerView);
- }
- FrameLayout providerViewContainer = nativeAdView.findViewById(R.id.native_ad_provider);
- providerViewContainer.addView(providerView);
- }
- nativeAdView.registerView(nativeAd);
- nativeAdView.setVisibility(View.VISIBLE);
- TextView link = nativeAdView.findViewById(R.id.native_ad_domain);
- link.setVisibility(View.GONE);
- TextView age = nativeAdView.findViewById(R.id.native_ad_age);
- age.setVisibility(View.GONE);
- TextView warning = nativeAdView.findViewById(R.id.native_ad_warning);
- warning.setVisibility(View.GONE);
- TextView price = nativeAdView.findViewById(R.id.native_ad_price);
- // В некоторых шаблонах объявлений виджет цены может отсутствовать, поэтому проверяем его наличие
- if (price != null) {
- price.setVisibility(View.GONE);
- }
- return nativeAdView;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement