5

我最近将我的应用程序从使用 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 的主要片段可见时,我将setTextFilterEnabled其 ListView 上的 设置为true,并将所有其他片段设置为false。这似乎根本没有帮助(我验证我正在正确切换标志以获取正确的片段)。

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

4

1 回答 1

0

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

于 2012-01-24T11:59:26.327 回答