RecyclerView постоянно изменяет размер списка, когда AdMob выходит и входит в видимое окно - PullRequest
0 голосов
/ 08 февраля 2019

Я перешел на библиотеки androidx.preference .-- и новый PreferenceFragmentCompat использует RecyclerView вместо ListView.У меня есть пользовательское представление предпочтений, которое содержит AdMob Smart Banner, и я сталкиваюсь с проблемами, когда прокрутка за AdView изменяет размер всех ячеек, а при обратной прокрутке - все ячейки.

Предпочтение AndroidX использует onBindViewHolder, а не onCreateView, что является проблемой для адаптации.

Строка, которая вызывает это, holder.setIsRecyclable(false);.Без этого AdViews начинают дублироваться и никогда не удаляются, поэтому я считаю, что флаг false неизбежен.Возможно, виновником является LinearLayout.addView (mAdView), но я не могу найти другой способ показа объявлений без него.

Вот все из AdPref.java, оно расширяется androidx.preference.Preference

public class AdPref extends Preference {
static AdView mAdView;

//DEFAULT CONSTRUCTORS
//...
//...//

@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
    LinearLayoutCompat ll = (LinearLayoutCompat) holder.findViewById(R.id.lAd);
    holder.setDividerAllowedAbove(false);
    holder.setDividerAllowedBelow(false);

    holder.setIsRecyclable(false); // SOLVES ONE PROBLEM, CREATES ANOTHER

    MobileAds.initialize(getContext(), "id");
    mAdView = new AdView(getContext());
    mAdView.setAdSize(AdSize.SMART_BANNER);
    mAdView.setAdUnitId("id");

    AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();
    mAdView.loadAd(adRequest);

    ll.addView(mAdView);

    super.onBindViewHolder(holder);
}

Каков оптимальный способ загрузки / удаления рекламы, когда пользователь прокручивает и выходит из видимого диапазона?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...