避免在listView中使用vViewGroup闪烁

时间:2016-08-24 14:02:56

标签: android listview

我在Android中实现了一个适配器,用于将Admob原生广告添加到LivtView对象中。这是一个简单的解决方案,它工作正常,但滚动列表视图时原生广告闪烁。从屏幕上抬起手指时实际发生闪烁 - 同时列表滚动原生广告滚动而没有闪烁。

我这样做的方法是在同一个适配器中插入常规列表视图项和原生广告 - 我会跟踪插入原生广告的位置,并在后台加载原生广告 - 在加载广告之前,我将虚拟视图插入适配器;在加载每个广告时,我将虚拟视图替换为原生广告。在getView上,我检查要绘制的项目是否为原生广告,如果是,我会对虚拟LinearLayout视图进行充气并执行以下操作以向其添加原生广告(如果已加载):

select * from `events_theatre` where
exists (
    select * from `events` where (
        `events`.`id` = `events_theatre`.`event_id` and `user_id` = 1 and `event_type` = 'theatre'
    ) or exists (
        select * from `users` inner join `events_managers` on `users`.`id` = `events_managers`.`user_id` where `events_managers`.`event_id` = `events`.`id` and `user_id` = 1
    )
    and `events`.`deleted_at` is null
) and `events_theatre`.`deleted_at` is null

这有一个简单的解决方法吗?我在使用RecyclerView时看到了类似情况的解决方案,但我还没有找到解决方案。

1 个答案:

答案 0 :(得分:0)

经过一些调试后,我发现每次调用getView函数时都会将原生广告插入到ListView中(即使它是可见的)。问题是我的getView代码中的一个错误 - 每次调用填充项目的代码,即使传递给函数的视图不为null。解决这个问题解决了这个问题!