1

我刚刚开始了我作为一名 android 程序员的职业生涯,目前主要依赖于示例代码和 api 示例。我一直在使用这个 api 示例来生成一个可扩展的项目列表(注意这个示例不使用 ExpadableListView)。

在使用示例时,我尝试添加另一个小部件,该小部件将与文本同时可见并消失(示例代码中的 mDialogue)。这适用于另一个 TextView,但是一旦我尝试添加按钮小部件,它就停止工作。该列表将在第一次单击时展开,显示我隐藏的 TextView 和 Button,但在进一步单击时它不会消失。但是,该按钮是可点击的,并且我能够设置一个 onClick 侦听器来来回更改按钮文本。

我开始怀疑,在可点击的列表项中是否不可能有可点击的项目?或者有什么解决办法?如果我使用 ExpandableListView 会解决我的问题吗?

4

1 回答 1

4

对于如何在由ListView#setItemsCanFocus(boolean). 如果您希望列表项中的各个视图聚焦,以便用户可以单独与它们进行交互,而不是与整个列表项进行交互,请将其称为传递truefalse是默认行为。

ListView 管理项目焦点和单击的默认行为基本上是一种快捷方式/优化,适用于从交互的角度来看整个项目作为单个单元的常见情况,但其布局可能很复杂。当您告诉 ListView 它的项目可以聚焦时,它会禁用此特殊行为,您应该使用更传统的机制来处理列表项中的视图上的事件。(监听器,重写 on* 方法等)

但是,当您的 ListView 没有为可聚焦项目设置时,为什么您的列表项目会停止点击?false如果列表项视图从返回,ListView 将仅生成项单击事件View#hasFocusable()。这意味着如果您想接收列表项的单击事件,则列表项的任何子项都不能成为焦点。一旦您的按钮变得可见,列表项就会有一个可聚焦的子项,并且将不再接收列表项单击事件。

于 2010-06-01T01:27:55.423 回答