1.Android一次按下操作定义了两个事件,ACTION_DOWN和ACTION_UP,即按下和松手两个动作。

 
2.除了判断是什么按键被按下,还应该判断按键是up还是down
 
3.调用event.getAction()方法可以得到键盘的action:ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.
 
if(event.getAction()==KeyEvent.ACTION_DOWN)或者if(event.getAction()==KeyEvent.ACTION_UP)做一次判断就OK了
 
我的code:
//右侧,处理Item的按键事件,试着添加按键监听事件
listView.setOnKeyListener(new ListView.OnKeyListener() { 
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){//如果是按下,则响应,否则,一次按下会响应两次
switch(keyCode){
case KeyEvent.KEYCODE_1:
Toast.makeText(ListView1Activity.this, "按下了--1", Toast.LENGTH_SHORT).show();
VideoInfo getObject = mlistInfo.get(m);   //通过position获取所点击的对象
               int infoId = getObject.getId(); //获取信息id  
               String infoTitle = getObject.getVideoTitle();    //获取信息标题  
               String infoDetails = getObject.getVideoDetails();    //获取信息详情  
                 
               int img  = getObject.getAvatar(); 
               imageView.setImageResource(img);
               m++;
break;
case KeyEvent.KEYCODE_2:
Toast.makeText(ListView1Activity.this, "按下了--2", Toast.LENGTH_SHORT).show();
break;
}
}
return false;
}
});
 
 
ps:这里if(event.getAction() == KeyEvent.ACTION_DOWN)写在所有按键之前,是因为所有按键都只在按键down的时候响应一次;如果有其他的需求,可以把down或up的操作判断写在具体某个键里,比如这个键响应down,那个键需要响应up。
 
http://blog.sina.com.cn/s/blog_67331d610102v52q.html

setOnKeyListener响应两次问题的更多相关文章

  1. android中使用setOnKeyListener响应输入事件

    在界面中添加一个EditText输入框控件,需要在输入时响应输入事件,可以使用setOnKeyListener() 事件: final EditText editText = findViewById ...

  2. android edittext 点击回车会响应两次的解决方案

    由于Key有Down和Up事件,所以会执行两次. class editTextOnKeyClickListener implements etOnKeyClickListener { @Overrid ...

  3. 关于nodejs 假设httpserver,会发现一次网页打开,服务端会响应两次的问题;

    转自:http://cnodejs.org/topic/518772806d38277306804020 每个页面默认都会再发一个de style="line-height: 21px; p ...

  4. Django2.0——请求与响应(上)

    客户端与服务段通过http协议进行数据的传输,而http协议是一种双向单工的,且主动发起连接的只有客户端.故数据的传送就离不开请求和响应,客户端每发起一个请求,服务端就是返回一个响应.在django的 ...

  5. JDK HttpClient 多重请求-响应的处理

    HttpClient 多重请求-响应的处理 目录 HttpClient 多重请求-响应的处理 1. 简述 2. 请求响应流程图 3. 用户请求的复制 4. 多重请求处理概览 5. 请求.响应过滤的执行 ...

  6. 当前端也拥有 Server 的能力

    今天看了不少文章,比较感兴趣的是 Cache API.它是浏览器 Request/Response 的缓存管理工具,其使用风格和运用场景让我瞬间联想到了 ServiceWorker 和 Fetch A ...

  7. JS实战 · 实践积累点滴杂烩

    onmouseover : 鼠标进入 onmouseout : 鼠标离开 onfocus:得到焦点   表单提交执行JS代码,有两种常用方式. 一:在局部(比如按钮定义处)用onclick=" ...

  8. I/O多路复用

    为什么要使用I/O多路复用 假设要求你写一个echo-server服务器,它也能对用户从标准输入键入的交互命令做出响应.在这种情况下, 服务器必须响应两个互相独立的I/O事件: 1) 网络客户端发起的 ...

  9. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

随机推荐

  1. 初始React Native

    1.何是React Native: React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目.支持用开源的JavaScript库React.js来开 ...

  2. 拆解一个简单的KeyFile保护

    系统 : Windows xp 程序 : abexcrackme3 程序下载地址 :http://pan.baidu.com/s/1mh3TiqO 要求 : 伪造Keyfile 使用工具 :IDA 可 ...

  3. Unity3d Shader

    Unity3d Shader 预览Surface Shader主要用来实现光照相关处理,可能更简洁. Vertex and Fragment Shader 如果不与光照交互, 则可以用这个shader ...

  4. 如何配置magento免运费商品方法

    作为magento电商来说,免运费是一种常见的促销手段,要让产品成为免运费对magento来说并不难,后台操作即可完成. 首先,我们要建立一个新的产品属性. catalog->attribute ...

  5. 对dataTable去重

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.T ...

  6. js实现对比百分比

    <script> for(var i=1;i<=3;i++){ for(var j=2;j<=4;j++){ var hid="w_"+4+j+" ...

  7. UVa 10900 - So you want to be a 2n-aire?

    题目大意: 一个答题赢奖金的问题,玩家初始的金额为1,给出n,表示有n道题目,t表示说答对一道题目的概率在t到1之间,每次面对一道题,可以选择结束游戏,获得当前奖金:回答下一道问题,答对的概率p在t到 ...

  8. 最小二乘法 python实现

    #-*-coding:UTF-8-*- # Created on 2015年10月20日 # @author: hanahimi import numpy as np import random im ...

  9. Html与CSS布局技巧

    一.单列布局 1.水平居中:(注:下面各个实例中实现的是child元素的对齐操作,child元素的父容器是parend元素) 1-1:使用inline-block和text-align实现: .par ...

  10. zboot/xtract.c

    /* *  linux/zBoot/xtract.c * *  Copyright (C) 1993  Hannu Savolainen * *    Extracts the system imag ...