0

電話番号を含むリストビューアイテムの図形を移動したい。

図形を右から左に動かすと電話をかけます。電話番号を取得して電話をかけるために、リストビューでその特定のアイテムを取得できません。

私のコードは

        @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;
            }

        });
4

1 に答える 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);
}
于 2013-02-19T13:26:02.410 に答える