Android中ListView选中事件setOnItemSelectedListener无反应不生效问题

在学习Android中ListView组件时,android模拟器运行app时,发现点击有反应,选中无反应,原因是在android模拟器中需要按键盘上下键来触发选中事件。

Android开发ListView事件:setOnItemSelectedListener、setOnItemClickListener、setOnTouchlistener3个不同监听区别,相信大家和我之前一样会有模糊,在手机上操作,感觉没什么区别,但是实际不是。首先从字面上理解,分别是:选择、点击和触摸,但是在实际中该如何使用呢?现在做android开发的,所使用的不论是真机还是模拟机,都是触屏交互的,在这里当选择或点击或触摸某个Item时,前后这些操作的先后顺序是:触摸→点击或选择;那么点击和选择的区分呢?在android手机设备中还真分不清,但是在android电视设备中,使用遥控器通过上下键选择Item与点击Item的时候,这下区分明白了吧!所以在android手机设备中,推荐使用点击,因为笔者在学习的时候分别对这两个接口测试,发现选择无效。

那如何增加点击选中功能呢?

可参考:android listview选中某一行,成选中状态颜色高亮显示

https://blog.csdn.net/dearbaba_8520/article/details/80468602

一种方法是构造自己的adapter,在getView中,设置颜色,点击item,刷新listview。

另外一种方法代码如下:

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建一个List集合,List集合的元素是MapList<Map<String, Object>> listItems =new ArrayList<Map<String, Object>>();for (int i = 0; i < names.length; i++){Map<String, Object> listItem = new HashMap<String, Object>();listItem.put("header", imageIds[i]);listItem.put("personName", names[i]);listItem.put("desc", descs[i]);listItems.add(listItem);}// 创建一个SimpleAdapterSimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,R.layout.simple_item,new String[] { "personName", "header" , "desc"},new int[] { R.id.name, R.id.header , R.id.desc });ListView list = (ListView) findViewById(R.id.mylist);// 为ListView设置Adapterlist.setAdapter(simpleAdapter);// 为ListView的列表项的单击事件绑定事件监听器list.setOnItemClickListener(new OnItemClickListener(){// 第position项被单击时激发该方法@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id){System.out.println(names[position]+ "被单击了");//View v=parent.getChildAt(position);//v.setBackgroundColor(Color.RED);for(int i=0;i<parent.getCount();i++){View v=parent.getChildAt(i);if (position == i) {v.setBackgroundColor(Color.GRAY);} else {v.setBackgroundColor(Color.TRANSPARENT);}}}});// 为ListView的列表项的选中事件绑定事件监听器list.setOnItemSelectedListener(new OnItemSelectedListener(){// 第position项被选中时激发该方法//在android模拟器中需要按键盘上下键触发选中事件@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id){System.out.println(names[position]+ "被选中了");for(int i=0;i<parent.getCount();i++){View v=parent.getChildAt(i);v.setBackgroundColor(Color.TRANSPARENT);}}@Overridepublic void onNothingSelected(AdapterView<?> parent){}});
}

旧问新解·ListView 中的 OnItemSelectedListener 不生效https://www.jianshu.com/p/d11f86051c20

Android中ListView选中事件setOnItemSelectedListener无反应不生效问题相关推荐

  1. android中ListView控件onItemClick事件中获取listView传递的数据

    http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...

  2. android listview 分析,Android中ListView用法实例分析

    本文实例分析了Android中ListView用法.分享给大家供大家参考,具体如下: 通过在Layout中添加ListView Widget可以达到在页面布局具有列表效果的交互页面.在这里通过举例来说 ...

  3. Android中加载事件的方式

    Android中加载事件的方式 通过内部类的方式实现 通过外部类的方式实现 通过属性的方式实现 通过自身实现接口的方式实现 通过内部类的方式实现 Demo btn_Login.setOnClickLi ...

  4. android listview 数据同步,android中ListView数据刷新时的同步方法

    本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...

  5. android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?

    快速,可能很简单,问题.我有一个视图,其背景是动画,在那段时间,我想禁止用户与视图交互.我的视图是一个FrameLayout,我用onTouchEvent()捕获触摸事件.我试过的解决方案:如何禁用/ ...

  6. android listview高级,Android中Listview点赞功能的实现

    最近这段时间一直在看Android,利用Listview去实现点赞功能,下面给大家介绍下基本思路. 基本思路: 进入界面–>获取数据–> 在Listview中显示–> 通过map集合 ...

  7. Android中Listview(七)--排序ListView

     ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于 ...

  8. Android中ListView的使用以及使用适配器设置数据源

    场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  9. Android中ListView分页加载数据

    熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容 ...

最新文章

  1. LeetCode简单题之石头与宝石
  2. python错误-Python错误解决
  3. CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
  4. oracle:sql查询
  5. 织梦 css里的图片标签,织梦{dede:field.body /}中用CSS的expression参数控制图片大小
  6. TCP 之 RST 原因分析
  7. linux系统下安装ns,Ubuntu 14.04下安装ns2.35
  8. 升级系统服务器出错,win10更新失败80070002错误怎么办
  9. WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
  10. 泰山游记:绝顶海拔1525米
  11. c++不好可以学qt吗_学美容好不好,学美容有前途吗?
  12. 程序员面试题分享,掌握八成便可BAT一试!
  13. MFC隐藏窗口及图标
  14. openGauss数据库备份恢复指导手册
  15. No filesystem could mount root, tried: ext3 ext2 ext4 vfat msdos
  16. 华为ME909s-821模块电信卡发短信问题
  17. vue 实现ps图片编辑_详解vue项目中实现图片裁剪功能
  18. vue中axios的post请求url自动带上本地ip解决方法
  19. “无文件”攻击方式渗透实验
  20. MATLAB拟合函数使用说明

热门文章

  1. 手机证件照怎么压缩?如何把手机证件照压缩到10K?
  2. 基于Javaee的珠宝购物网站的设计与实现
  3. 五分钟学会HTML5!(一)
  4. 针对金融行业的数据治理解决方案
  5. 质量管理体系之测试报告
  6. 华为笔记本 Win10+Deepin 双系统安装方法
  7. DuDuTalk:地产行业如何用智能工牌和语音分析打造标准化接访流程,批量复制金牌置业顾问?
  8. aerospike数据库的使用
  9. 火车票报销凭证可以网上打吗?火车票怎么报销取发票
  10. 小程序拼团,分销逻辑