Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. /**
  2. * Связывает {@link View} c {@link NativeAd}.
  3. * Требования к реализации (с примерами) представлены:
  4. * {@link "http://www.appodeal.ru/sdk/documentation?framework=1&full=1#p_4_6"}.
  5. *
  6. * @return Экземпляр представления, {@link View}.
  7. */
  8. @NonNull
  9. private View bindView(@NonNull Context context, @NonNull NativeAdView nativeAdView, @NonNull NativeAd nativeAd) {
  10. // TextView nativeAdSign = nativeAdView.findViewById(R.id.native_ad_mark);
  11. // nativeAdSign.setText(context.getString(R.string.ad_mark));
  12. // nativeAdView.setProviderView(nativeAdSign);
  13.  
  14. TextView nativeTitle = nativeAdView.findViewById(R.id.native_ad_title);
  15. nativeTitle.setText(nativeAd.getTitle());
  16. nativeAdView.setTitleView(nativeTitle);
  17.  
  18. TextView nativeDescription = nativeAdView.findViewById(R.id.native_ad_body);
  19. nativeDescription.setEllipsize(TextUtils.TruncateAt.END);
  20. nativeDescription.setText(nativeAd.getDescription());
  21. nativeAdView.setDescriptionView(nativeDescription);
  22.  
  23. RatingBar nativeRating = nativeAdView.findViewById(R.id.native_ad_rating);
  24. // В некоторых шаблонах объявлений виджет рейтинга может отсутствовать, поэтому проверяем его наличие
  25. if (nativeRating != null) {
  26. if (nativeAd.getRating() == 0) {
  27. nativeRating.setVisibility(View.INVISIBLE);
  28. } else {
  29. nativeRating.setVisibility(View.VISIBLE);
  30. nativeRating.setRating(nativeAd.getRating());
  31. nativeRating.setIsIndicator(true);
  32. nativeRating.setStepSize(0.1f);
  33. }
  34. }
  35. nativeAdView.setRatingView(nativeRating);
  36.  
  37. Button nativeCta = nativeAdView.findViewById(R.id.native_ad_cta);
  38. nativeCta.setText(nativeAd.getCallToAction());
  39. nativeAdView.setCallToActionView(nativeCta);
  40.  
  41. // Загружаем иконку с помощью Glide, т.к. загрузка средствами Appodeal SDK вызывает OOM
  42. if (!TextUtils.isEmpty(nativeAd.getIconUrl())) {
  43. ImageView iconView = nativeAdView.findViewById(R.id.native_ad_icon);
  44. GlideApp.with(context.getApplicationContext())
  45. .load(nativeAd.getIconUrl())
  46. .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
  47. .into(iconView);
  48. }
  49.  
  50. View providerView = nativeAd.getProviderView(context);
  51. if (providerView != null) {
  52. // По всей видимости каждый раз возвращается один и тот же экземпляр вьюхи,
  53. // поэтому при биндинге ко второму объявлению у неё уже будет родитель, что вызовет падение.
  54. // Поэтому проверяем наличие предыдущего родителя и очищаем его.
  55. ViewParent parent = providerView.getParent();
  56. if (parent != null) {
  57. ((FrameLayout) parent).removeView(providerView);
  58. }
  59. FrameLayout providerViewContainer = nativeAdView.findViewById(R.id.native_ad_provider);
  60. providerViewContainer.addView(providerView);
  61. }
  62. nativeAdView.registerView(nativeAd);
  63. nativeAdView.setVisibility(View.VISIBLE);
  64.  
  65. TextView link = nativeAdView.findViewById(R.id.native_ad_domain);
  66. link.setVisibility(View.GONE);
  67. TextView age = nativeAdView.findViewById(R.id.native_ad_age);
  68. age.setVisibility(View.GONE);
  69. TextView warning = nativeAdView.findViewById(R.id.native_ad_warning);
  70. warning.setVisibility(View.GONE);
  71. TextView price = nativeAdView.findViewById(R.id.native_ad_price);
  72. // В некоторых шаблонах объявлений виджет цены может отсутствовать, поэтому проверяем его наличие
  73. if (price != null) {
  74. price.setVisibility(View.GONE);
  75. }
  76. return nativeAdView;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement