0

这是对处理 ListView 中 onItemClick 事件中的视图的最佳实践的请求。

我的 ListView 中的每个视图都包含一个 ImageView、一些 TextView 和一个包裹在 RelativeLayout 中的 CheckBox。在任何地方选择项目视图时,我希望根据需要勾选/取消勾选复选框。我还希望可以选择更改视图样式,即通过为笔划着色来突出显示该项目。

我目前的问题与其他所有这样做的人相似。由于 ListView 回收,如果我抓取传递给 onItemClick 的视图并设置背景资源或复选框选中值,它也会为当前未呈现的视图更改它们。我想知道实现这一目标的最佳方法。

我知道有一种模式可以通过实现 onClickListener 直接处理 ArrayAdapter 中的 CheckBox 事件,但我相信这只会响应 CheckBox 的直接选择;它将忽略对视图其余部分的任何点击。另外,如果 CheckBox onClick 事件被触发,它将消耗 click 事件,因此 onItemClick 不会触发,我需要设置我的数据。

此外,使用 CheckedTextView 将不起作用,因为它位于 RelativeLayout 内部,它不会将选中的事件传递给 ListView。有一篇文章建议您创建自己的 CheckedViewLayout 来实现 Checkable 来处理查看检查的事件。如果我继续这样做,我是否能够在 xml 中引用我的新布局类,或者我是否必须再次设计我的每个视图,但使用 Java 代码?

如果其他人有更好的解决方案,请告诉我。

4

2 回答 2

1

嘿,我认为这个链接可能对你有用,有一个细节给你

Android ListView 复选框示例 - OnItemClickListener() 和 OnClickListener()

于 2013-10-04T08:46:12.770 回答
0

最后,我创建了自己的实现 Checkable 的 CheckableRelativeLayout,并将其用作每个 ListView 项的主容器。我在 CheckableRelativeLayout 中使用了一个布尔值来跟踪视图是否被点击。

如果需要,我可以发布最后的课程。

于 2013-10-09T18:08:01.123 回答