Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中通过触摸事件获取listview中的项目,所以我在移动项目时设置了该项目的背景色_Android - Fatal编程技术网

如何在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);
}