【问题标题】:Handling onItemClick event with ListView and complex layout使用 ListView 和复杂布局处理 onItemClick 事件
【发布时间】:2013-10-11 04:37:57
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 如果为真,只改变位置stackoverflow.com/questions/12051813/…的bg
  • Given Answer by @Mit Bhatt 会为你工作,OnItemClick 和 chkbox onClick 会工作,因为他们在 View Holder 类中使用 Chkbox 点击,比如 holder.name.setOnClickListener。(在 AdpterView 中)所以它肯定会解决你的问题。
  • MDroid,它不会。看我的回复。请记住,我那里也有一个 ImageView。这本质上是一个电话联系人 ListView。

标签: android listview android-relativelayout checkedtextview onitemclick


【解决方案1】:

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

Android ListView Checkbox Example - OnItemClickListener() and OnClickListener()

【讨论】:

  • 您是说即使您将 OnClickListener 附加到复选框,onItemClick 仍会触发?此外,复选框只是我布局的一小部分。我希望能够选择视图上的任何位置,而不仅仅是复选框。
  • 试试这个代码一次..!它在我这边工作,你说因为相对布局有问题,他们使用相对布局,!
  • 好的,但这只会处理 CheckBox 上的点击事件。如果我点击TextView,它不会工作,对吧?
  • 是的,您还想在 Textview 上应用一些操作吗?在您的自定义列表视图中?
  • 然后有一个属性是复选框Text属性,你需要在那里添加你的文本而不是设置textView。
【解决方案2】:

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

如果需要,我可以发布最后一堂课。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2012-05-01
    相关资源
    最近更新 更多