listview onItemClick无反应

是因为list item layout的android:clickable="true"  这样ListView中的Item内部的View获得了焦点,如Button, Checkbox等


把这个属性去掉就可以了


另外

如果自定义ListViewItem中有Button或者Checkable的子类控件 ,默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的 focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了。

我们可以通过对Item Layout的根控件设置其Android:descendantFocusability="blocksDescendants"即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。


不让ListView中的Item内部的View获得焦点就好了,android:descendantFocusability="blocksDescendants"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
### 回答1: 如果你的Fragment中的OnItemClick方法没有反应,可能是因为你没有正确地设置点击事件监听器。在Fragment中实现点击事件监听器的步骤如下: 1. 在Fragment的onCreateView()方法中,找到ListView或RecyclerView等列表控件,并设置它们的适配器。 2. 在适配器中,为每个列表项设置点击事件监听器。 3. 在Fragment中实现OnItemClick()方法,处理列表项点击事件。 以下是一个示例代码: ```java public class MyFragment extends Fragment implements OnItemClickListener { private ListView mListView; private MyAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_my, container, false); mListView = (ListView) view.findViewById(R.id.list_view); mAdapter = new MyAdapter(getContext(), getData()); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(this); return view; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 处理列表项点击事件 } } ``` 在这个示例代码中,我们在onCreateView()方法中设置了ListView的适配器,并为ListView设置了OnItemClickListener。在OnItemClick()方法中,我们可以处理列表项的点击事件。注意,这里的OnItemClickListener是android.widget.AdapterView.OnItemClickListener接口的实现,而不是RecyclerView的点击事件监听器。如果你使用RecyclerView,你需要实现RecyclerView的点击事件监听器。 ### 回答2: 当fragment的OnItemClick方法没有反应时,可能是由于以下几个原因: 1. 未正确设置OnItemClick监听器:在使用RecyclerView或ListView等可点击列表控件时,需要设置正确的OnItemClick监听器。可以通过在Fragment的onCreateView方法中获取控件实例,并为其设置监听器。确保监听器已正确注册。 2. 未正确设置适配器:在使用RecyclerView或ListView时,需要为其设置适配器。适配器负责为列表控件提供数据,并将数据与列表项关联起来。如果未正确设置适配器或适配器中的数据与列表项不匹配,可能导致OnItemClick方法没有反应。 3. OnItemClick方法中的代码有误:检查OnItemClick方法中的代码是否正确,可能存在逻辑错误或错误的方法调用。例如,可能未正确处理点击事件,没有执行需要的操作或调用了错误的方法。 4. XML布局文件有错:检查Fragment相关的XML布局文件,确保列表控件设置了正确的属性和ID。同时,还要确保列表项布局中的控件也设置了正确的属性和ID。 5. Fragment未正确加载:在使用Fragment时,需要将其正确加载到Activity中。通过事务将Fragment添加到Activity中,确保Fragment的生命周期方法被正确调用。 综上所述,当fragment的OnItemClick方法没有反应时,需要检查监听器、适配器、代码、布局文件和Fragment加载等方面的问题。根据具体情况逐一排查问题所在,并及时进行修复。 ### 回答3: 当Fragment的onItemClick方法没有反应时,可能存在以下几种情况: 1. 没有正确设置点击事件监听器:在Fragment的onCreateView方法中,需要为ListView或RecyclerView等容器设置一个点击事件监听器。例如,在RecyclerView中,可以通过设置adapter的setOnItemClickListener方法来设置监听器,而在ListView中,则需要使用setOnItemClickListener方法来设置监听器。 2. 没有正确实现点击事件监听器:在Fragment中,需要实现一个接口来监听点击事件,在接口的回调方法中处理点击事件。如果没有正确实现接口或者没有在回调方法中处理点击事件,那么点击事件就不会有任何反应。 3. 布局文件中的控件没有设置可点击属性:在布局文件中,需要将需要点击的控件的可点击属性设置为true。例如,在使用Button或ImageView等控件时,需要将它们的"clickable"属性设置为true。 4. Fragment没有正确注册点击事件:在Fragment的onActivityCreated方法中,需要为点击事件注册监听器。例如,在使用ListView时,可以使用ListView的setOnItemClickListener方法注册监听器,而RecyclerView需要使用adapter的setOnItemClickListener方法注册监听器。 5. 某些操作可能会阻止点击事件的触发:例如,在Fragment的布局文件中的控件被另一个控件遮挡,或者被设置为不可见等情况,都可能导致点击事件无法触发。因此,需要检查布局文件中的控件是否有被其他控件遮挡或设置为不可见的情况。 综上所述,如果Fragment的onItemClick没有反应,通常是由于没有正确设置点击事件监听器,没有实现监听器的回调方法,或者存在一些阻止点击事件触发的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值