【问题标题】:ListFragment onListItemClick - how to know which component is clickedListFragment onListItemClick - 如何知道点击了哪个组件
【发布时间】:2016-06-02 06:22:21
【问题描述】:

视图对象来自onListItemClick(ListView listView, View view, int position, long id)RelativeLayout

但是,我想知道RelativeLayout 中的哪个组件也被单击以获得扩展功能。

我该怎么做?

【问题讨论】:

标签: android android-layout


【解决方案1】:

这个答案说明了为什么使用recyclerview而不是Listview,我认为recyclerview会解决你的问题stackoverflow.com/a/24933117/2242903

【讨论】:

  • 有点复杂,而且缺少包含多个组件的完整工作示例代码并不好......但是感谢您为我指明了正确的方向。
  • ListViewRecyclerView 是相似的。这不会解决他的问题。
  • @GokhanArik 你读过这个分析器 stackoverflow.com/a/24933117/2242903 吗?
  • 是的,我做到了。确实,RecyclerView 没有onItemClickListener,使用RecyclerView 而不是ListView 可能会更好。但是,如果他想使用ListView,他仍然可以达到同样的效果。您发布的答案指出“当您有任何内部元素的点击侦听器时,回调将不会被触发,但它没有得到通知或有据可查(如果有的话),所以有很多混乱和 SO 问题关于它。'这令人困惑,但并非不可能。您只需添加focusable 属性或阻止后代。
【解决方案2】:

您必须为RelativeLayout 中您想收听的每个视图添加一个监听器。如果您想使用单个侦听器,请创建一个并将其添加到您要侦听的所有视图中。在您的onClick 方法中,您可以将view.getId() 放入switch 语句并确定单击了哪一个。

OnItemClickListener 不会解决您的问题。既不切换到RecyclerView。它们的工作方式相同。这完全取决于您的适配器。如果您使用的是 custom 适配器,则使用 ListViewRecyclerView 并不重要。在您的适配器中,您可以访问 RelativeLayout 中的组件。按照我上面的解释创建一个侦听器并将它们添加到您的视图中。

不一样但相似的问题:Android: Add event listeners to every item in a ListView

【讨论】:

  • 非常感谢您的回答。这正是我所需要的。
猜你喜欢
  • 2012-04-18
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多