我只有两个元素的列表视图。
你按下其中一个,它应振动1000毫秒并停止。
按另一个,当你的手指按下时,它应该是振动的。
再一次,你点击第一个项目,它会振动1000毫秒......当你触摸并按住第二个项目时,它应该振动直到你移开你的手指。
下面我得到了相同的代码:
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> aView, View v, int position,
long id) {
switch (position) {
case 0:
Vibrator x = (Vibrator) getApplicationContext()
.getSystemService(Context.VIBRATOR_SERVICE);
x.vibrate(1000);
break;
case 1: break;// Need To vibrate while pressed here
}
}
});
listview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Vibrator x = (Vibrator) getApplicationContext()
.getSystemService(Context.VIBRATOR_SERVICE);
x.vibrate(5000);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
Vibrator xa = (Vibrator) getApplicationContext()
.getSystemService(Context.VIBRATOR_SERVICE);
xa.cancel();
}
return true;
}
});
所以,我有两个听众
在第一个(OnItemClick)..
如果按下第一个按钮,我会振动1秒钟。
如果我只有这个功能,那么效果很好(第一个按钮)
在第二个听众中,我接受了动作事件,因为我需要知道用户何时按下并备份..
但是,似乎第二个侦听器会覆盖第一个侦听器。
当我在OnCreate()中存在这两个侦听器时,setOnItemListener根本不起作用。
他们自己,每个功能都完全符合我的要求。但我需要将它们两者结合起来。
我需要在OnItemListener的“Case:1”中设置setOnTouchListener ...
因此,当点击第一个项目时,它会振动1秒......当点击第2个项目时,只要按下该项目(处于聚焦状态),它就会振动
知道如何将这两者结合起来吗?
(上面的代码工作得非常好,我只需要将Touch Listener放在OnItemClick()中,但它会出错...请随意复制粘贴,我只需要弄清楚究竟如何放置功能......)
谢谢!
答案 0 :(得分:0)
将OnTouchListener
移至View
ListAdapter
为[{1}} View
position > 0
OnItemClickListener
移动{/ 1}}。
这种方式应该解决: