过滤作为 ViewPager 片段一部分的 ListView

Posted

技术标签:

【中文标题】过滤作为 ViewPager 片段一部分的 ListView【英文标题】:Filtering ListView which is part of a ViewPager Fragment 【发布时间】:2011-11-27 03:12:55 【问题描述】:

我最近将我的应用程序从使用 Activites 和 TabHost 转换为使用 android Compat Library for API v4 中的 Fragments 和 ViewPager 我能够修复/解决大多数问题,但无法保留以前使用 setTextFilterEnabled 方法在 ListViews 中过滤文本的行为。

我的ViewPagerAdapter 包含片段,每个片段都有一个ListView。当用户在ViewPager 上滑动时,我希望当前活动的 Fragment 的 ListView 在用户键入时过滤文本,就像我能够使用 TabHost-Activity 模型一样。目前,看起来第一个 Fragment 的 ListView 会正确响应,但如果我滑动到下一个 Fragment 并尝试过滤其 ListView,过滤仍将适用于第一个。如果我扫过前两个然后过滤,结果是不确定的。当前活动的 Fragment 永远不会应用过滤器。有时相邻的片段会,有时不会。

我尝试通过添加自定义回调来解决此问题,这些回调让我可以监控哪些 Fragment 当前可见,哪些是隐藏的。当一个片段作为 ViewPager 的主要片段可见时,我将其 ListView 上的setTextFilterEnabled 设置为true,并将所有其他设置为false。这似乎根本没有帮助(我验证我正在正确切换标志以获取正确的片段)。

我怀疑这需要与 ViewPager 进行某种更深入的集成,但我无法真正弄清楚我需要连接什么。关于如何完成这项工作的任何想法?如果需要,我很乐意使用 ACL 代码。

【问题讨论】:

如果你能发布相关的sn-ps,说明你以前做过什么,以及你现在做什么,这将有所帮助。 【参考方案1】:

您可以实现方法onPageSelected 扩展OnPageChangeListener。也许你已经这样做了。从那里您可以将适配器设置为当前的 ListView 或在这种情况下重新查询您的 cursorAdapter。注意,使用的 Adapter 必须实现 Filterable 接口。

【讨论】:

以上是关于过滤作为 ViewPager 片段一部分的 ListView的主要内容,如果未能解决你的问题,请参考以下文章

在android中使用viewpager的带有多个片段的SearchView

如何从(和替换)TabLayout 和 ViewPager 移动到新片段?

带有嵌套片段的导航抽屉 (ViewPager)

ViewPager2 中的片段在返回父片段时被重新创建

ViewPager 片段重新创建,已恢复但不可见

ViewPager开关没有显示片段之间