这是对处理 ListView 中 onItemClick 事件中的视图的最佳实践的请求。
我的 ListView 中的每个视图都包含一个 ImageView、一些 TextView 和一个包裹在 RelativeLayout 中的 CheckBox。在任何地方选择项目视图时,我希望根据需要勾选/取消勾选复选框。我还希望可以选择更改视图样式,即通过为笔划着色来突出显示该项目。
我目前的问题与其他所有这样做的人相似。由于 ListView 回收,如果我抓取传递给 onItemClick 的视图并设置背景资源或复选框选中值,它也会为当前未呈现的视图更改它们。我想知道实现这一目标的最佳方法。
我知道有一种模式可以通过实现 onClickListener 直接处理 ArrayAdapter 中的 CheckBox 事件,但我相信这只会响应 CheckBox 的直接选择;它将忽略对视图其余部分的任何点击。另外,如果 CheckBox onClick 事件被触发,它将消耗 click 事件,因此 onItemClick 不会触发,我需要设置我的数据。
此外,使用 CheckedTextView 将不起作用,因为它位于 RelativeLayout 内部,它不会将选中的事件传递给 ListView。有一篇文章建议您创建自己的 CheckedViewLayout 来实现 Checkable 来处理查看检查的事件。如果我继续这样做,我是否能够在 xml 中引用我的新布局类,或者我是否必须再次设计我的每个视图,但使用 Java 代码?
如果其他人有更好的解决方案,请告诉我。