我正在创建一个滑动关闭列表视图适配器。我的基本方法是将列表项的视图包装为 ViewPager 中的第二个视图,并在 ViewPager 的项目更改侦听器中提供必要的回调。经过很多痛苦,我让 View 回收器按预期工作,并实现了 ViewHolder 和 ViewBinder 模式。我什至设法在滚动 ViewPager 时阻止 ListView 接管触摸事件,而不必创建 ListView 的自定义子类(我可以从适配器中完成这一切)。
我遇到麻烦的地方是让选择器和OnItemClickListener
工作。在查看 ListView 的源代码后,似乎通过覆盖 ViewPager 的 hasFocusable() 方法以始终返回 false(稍后我将从子视图中提取此值),这些东西应该已经被重新启用。不幸的是,这种情况并非如此。我已经尝试了setDecendantFocusability()
解决方法,但我仍然卡住了。
如果可能的话,我想避免扩展 ListView 以提供最大量的模块化。出于类似的原因,我不想将选择器添加到 ViewPager 的背景中(如果开发人员更改了 ListView 的选择器,则不会反映出来)。本质上,我希望使 ListView 和子视图之间的 ViewPager 代码透明。有任何想法吗?