`
asetbug
  • 浏览: 26769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案

阅读更多
  Android中自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案
  
在Android软件设计与实现中我们通常都会使用到ListView这个控件,系统有一些预置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是总是会有一些情况我们需要通过自定义 ListView来实现一些效果,那么在这个时候,我们通常会碰到自定义ListView无法选中整个ListViewItem的情况,也就是无法响应 ListView的onItemClickListener中的onItemClick()方法,究竟是为什么呢?

我之前也在网上查过不少的资料,但是没有发现什么有价值的文章,有一些是建议在Adapter的getView方法中对自己需要响应单击事件的控件进行设置。但是最终的效果并不是特别理想,而且我认为这是一种取巧的方式,并不推荐

  我们看到了一行代码定义的变量的意思是“当前View将屏蔽他所有子控件的Focus状态,即便这些子控件是可以Focus的”,其实这段话的意思就是这个变量代表着当前的View将不顾其子控件是否可以Focus自身接管了所有的Focus,通常默认能获得focus的控件有 Button,Checkable继承来的所有控件,这就意味着如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView 中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法.

然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendant”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,

如此就可以顺利的响应onItemClickListener中的 onItenClick()方法了。
分享到:
评论

相关推荐

    android 自定义ListView实现单选

    本篇文章将详细探讨如何通过自定义ListView来实现单选功能,旨在帮助开发者解决这一问题。 一、自定义ListView的必要性 系统自带的ListView默认并未提供单选模式,而是多选或全选。当用户需要在列表中选择一个项目...

    安卓listview相关相关-Android开发之ListView+EditText焦点问题解决方案.rar

    类似于上面的方法,也可以在`OnItemClickListener`的`onItemClick()`方法中处理焦点问题。但这种方法可能在快速滚动时触发多次,因此需要适当控制。 4. **自定义Adapter**: 在自定义Adapter中,可以重写`getView...

    Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证

    这篇博客"Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证"可能探讨了在实现这些监听器时常见的问题和解决方案。 首先,`onItemClick`方法是当用户点击ListView中的一个项目时被调用。它接收`...

    Listview自定义Adapter显示省名并响应item事件

    在Android开发中,ListView是一个非常常用的控件,用于展示大量数据列表。本教程将深入讲解如何使用自定义Adapter来显示省名,并响应ListView中的item点击事件。Adapter是连接ListView和数据源的关键,它负责将数据...

    android自定义ListView控件实现下拉刷新、分页加载、item点击

    在Android开发中,ListView是常用的一种视图组件,用于展示多行数据列表。然而,为了提供更好的用户体验,我们经常需要对ListView进行自定义,添加一些高级功能,如下拉刷新、分页加载以及Item点击事件处理。这篇...

    listview 自定义+监听用法

    这篇博客“listview 自定义+监听用法”将深入探讨如何在Android应用中实现ListView的自定义和监听功能。 首先,自定义ListView主要包括两大部分:自定义适配器(Adapter)和自定义视图(View)。适配器是连接数据源...

    ListView中嵌入Button ,ListView的item与Button的click事件分别被响应,同时还实现了类似Digg的item点击效果

    在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。在实际应用中,我们经常需要在ListView的每一项(item)中嵌入其他组件,如Button,以实现更丰富的交互功能。本示例中,我们将探讨如何在...

    Android ListView 之 自定义Adapter 实现列表条目功能,以及 OnItemClickListener(点击事件) OnScrollListener(滑动事件)事件监听

    Android ListView 之 自定义Adapter 实现列表条目功能,以及 OnItemClickListener(点击事件) OnScrollListener(滑动事件)事件监听   目录 Android ListView 之 自定义Adapter 实现列表条目功能,以及 ...

    listview的事件处理

    本篇文章将深入探讨ListView的事件处理,特别是如何处理ListView与Button共存时焦点问题,以及在Adapter中实现接口来响应按钮点击,改变ListView中的数据。 首先,我们来解决“listview与button共存抢夺焦点问题”...

    老生常谈Listview中onItemClick中的各个参数(推荐)

    本文将详细讲解ListView的`onItemClick`方法中的各个参数及其应用,以及如何在点击事件中获取当前选中行的数据,以便调用相应的服务接口。 `OnItemClickListener`是一个接口,包含一个方法`onItemClick(AdapterView...

    listView上增加button点击事件

    在Adapter中,我们通常会创建一个自定义的布局文件,该文件包含了ListView每一项应有的组件,比如文本、图片或者按钮。 接着,我们会在Adapter的`getView()`方法中实例化并配置每个item的视图。在这个过程中,我们...

    自定义Dialog里listview的单选、多选

    在`AlertDialog.Builder`中,我们可以通过`setView()`方法加载自定义布局,该布局中包含了一个ListView。如果是使用`DialogFragment`,则需要在`onCreateDialog()`方法内构建Dialog并设置视图。 ```java // 使用...

    Listview中的Button实现点击事件

    在Android开发中,ListView是一种常用的控件,用于展示可滚动的列表数据。在ListView中嵌入Button,可以创建丰富的交互式界面,例如QQ空间的说说评论和点赞功能。实现ListView中Button的点击事件,主要涉及到事件...

    高防QQ的ListView

    9. **ListView的嵌套滑动**: 如果ListView中包含可滑动的子视图(如ScrollView或ViewPager),则需要处理好嵌套滑动的问题,避免冲突。 10. **自定义视图绘制**: 在自定义ListView的过程中,可能需要对列表项进行...

    安卓listview

    当ListView与其他可滚动视图(如ScrollView)一起使用时,可能需要处理嵌套滚动问题,可以使用`NestedScrollView`或`NestedScrollingChildHelper`、`NestedScrollingParentHelper`来解决。 以上就是关于安卓...

    android dialog嵌套ListView

    以上就是关于“android dialog嵌套ListView”实现的基本步骤,包括创建自定义布局、适配器、设置点击事件以及在`Dialog`中显示`ListView`。通过这种方式,我们可以在`Dialog`中展示丰富的列表数据,并允许用户进行...

    listview中添加CheckBox的完美实现

    在我们的示例代码中,我们实现了一个完美的 ListView 中添加 CheckBox 的解决方案,它可以解决事件冲突和复用错误的问题。我们使用了一个自定义的 Adapter 来控制 ListView 中的每个项目,并使用了一个 HashMap 来...

    Android开发教程:仿通讯录ListView小例子

    在Android开发中,ListView是一种非常常见的组件,常用于展示大量数据列表,如通讯录、应用列表等。本教程将引导你实现一个简单的仿通讯录ListView小例子,通过这个实例,你可以学习到如何在Android中有效地利用...

    listview item点击事件冲突问题

    解决这个问题的方法是在子View的XML布局中添加`android:clickable="false"`或`android:focusable="false"`,或者在代码中设置`setClickable(false)`和`setFocusable(false)`,使得点击事件能传递到ListView。...

    listView的使用 很好的

    你需要创建一个继承自BaseAdapter的自定义Adapter,然后在Adapter中实现数据绑定的方法,将数据转换为ListView可以显示的视图组件。 1. **创建ListView** 在XML布局文件中,你可以通过`<ListView>`标签添加...

Global site tag (gtag.js) - Google Analytics