如何在android中通过触摸事件获取listview中的项目,所以我在移动项目时设置了该项目的背景色
我想移动包含电话号码的列表视图项上的数字 当我把人物从右向左移动时,打个电话。我无法获取列表视图中的特定项以获取电话号码并拨打电话 我的代码是如何在android中通过触摸事件获取listview中的项目,所以我在移动项目时设置了该项目的背景色,android,Android,我想移动包含电话号码的列表视图项上的数字 当我把人物从右向左移动时,打个电话。我无法获取列表视图中的特定项以获取电话号码并拨打电话 我的代码是 @Override arg1.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent event) {
@Override
arg1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
float startX = 0;
float startY;
float endX;
float endY;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
startY = (int) event.getY();
System.out.println("startX" + startX);
System.out.println("startY" + startY);
break;
case MotionEvent.ACTION_MOVE:
endX = event.getX();
endY = (int) event.getY();
System.out.println("endX" + endX);
System.out.println("endY" + endY);
float sub = endX - startX;
System.out.println("sub" + sub);
if ((endX - startX) < 100) {
arg0.setBackgroundColor(Color.GREEN);
}
if ((endX - startX) > 100) {
try {
TextView ph_tv = (TextView) arg0
.findViewById(R.id.textnum);
String Pho_no = ph_tv.getText().toString();
arg0.setBackgroundColor(Color.RED);
Intent intent = new Intent(
Intent.ACTION_CALL, Uri
.parse("tel:" + Pho_no));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
lv.setBackgroundColor(Color.BLACK);
} catch (ActivityNotFoundException e) {
Toast.makeText(
getApplicationContext(),
"Error in your phone call"
+ e.getMessage(),
Toast.LENGTH_LONG).show();
}
section(path_name, lv1);
}
break;
case MotionEvent.ACTION_UP:
endX = (int) event.getX();
endY = (int) event.getY();
}
return true;
}
});
@覆盖
arg1.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图arg0,运动事件){
浮点数startX=0;
浮星;
浮动端点;
浮动端;
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
startX=(int)event.getX();
startY=(int)event.getY();
系统输出打印项次(“startX”+startX);
System.out.println(“startY”+startY);
打破
case MotionEvent.ACTION\u移动:
endX=event.getX();
endY=(int)event.getY();
System.out.println(“endX”+endX);
System.out.println(“endY”+endY);
浮子=endX-startX;
系统输出打印项次(“子项”+子项);
如果((endX-startX)<100){
arg0.setBackgroundColor(Color.GREEN);
}
如果((endX-startX)>100){
试一试{
TextView ph_tv=(TextView)arg0
.findviewbyd(R.id.textnum);
字符串Pho_no=ph_tv.getText().toString();
arg0.setBackgroundColor(颜色:红色);
意图=新意图(
Intent.ACTION\u调用,Uri
.parse(“电话:+phou no”);
intent.setFlags(intent.FLAG\u活动\u新任务);
星触觉(意向);
lv.setBackgroundColor(黑色);
}捕获(ActivityNotFounde异常){
Toast.makeText(
getApplicationContext(),
“您的电话出错”
+e.getMessage(),
Toast.LENGTH_LONG).show();
}
部分(路径名称,1级);
}
打破
case MotionEvent.ACTION\u UP:
endX=(int)event.getX();
endY=(int)event.getY();
}
返回true;
}
});
b.w这个问题看起来类似于[Android-基本手势检测][1][1]:
float hX = Float.NaN, historicY = Float.NaN;
static final TRIGGER_DELTA = 50; // Number of pixels to travel till trigger
@Override public boolean onTouchEvent(MotionEvent e) {
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
hX = e.getX();
historicY = e.getY();
break;
case MotionEvent.ACTION_UP:
if (e.getX() - hX > -TRIGGER_DELTA) {
onSlideComplete(Direction.LEFT);
return true;
}
else if (e.getX() - hX > TRIGGER_DELTA) {
onSlideComplete(Direction.RIGHT);
return true;
} break;
default:
return super.onTouchEvent(e);
}
}
enum Direction {
LEFT, RIGHT;
}
interface OnSlideCompleteListener {
void onSlideComplete(Direction dir);
}