1

項目として連絡先番号を含むリストビューがあります。

ユーザーが連絡先に対して左スワイプ(左方向へのスワップ)を実行すると、アプリがその連絡先の呼び出しを開始するようにします。

連絡先で左スワイプと右スワイプを処理/検出する方法と、リストビューのスワイプイベントが実行されたアイテムを検出する方法を知りたいです。

ありがとう

4

2 に答える 2

1

Android でのジェスチャーの処理に関するチュートリアルがあります。それをチェックしてください!!

于 2012-11-16T11:25:48.760 に答える
0

メソッドを使用してonFling()スワイプを検出します。特定のリスト項目のスワイプを検出することが考慮される限り、独自adapterのメソッドを提供してそのメソッドをオーバーライドする必要がありますgetView()
例えば

public class My_simple_adapter extends ArrayAdapter<String> //THIS IS THE CUSTOM ADAPTER
{
 private final Context context;
 private final String[] values;

 public My_simple_adapter(Context context,String[] values,int[] pos)
 {
  super(context,R.layout.list_item,values);
  this.context=context;
  this.values=values;

 }

 @Override
 public View getView(int position,View convert_view,ViewGroup parent)
 {
  LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View rowView = inflater.inflate(R.layout.MY_LAYTOUT, parent, false);
   // THE ABOVE MY_LAYOUT IS THE LAYOUT YOU WANT TO LOAD FOR EACH ROW OF THE LISTVIEW
  TextView textView = (TextView) rowView.findViewById(R.id.tv1);
  textView.setText(values[position]);

  //SUPPOSE rlt IS THE ID OF THE ABOVE MY_LAYOUT
  //then
  rlt.setOnTouchListener(new View.OnTouchListener()
         {
                public boolean onTouch(View view, MotionEvent event) {
                    Log.d("test", "clicked!");
                    if(gestureDetector.onTouchEvent(event))  {
                        Log.d("test", "gesture detected");
                        return true;
                    }

                    return false;
                }
            });

  return  rowView;
 }
} 


これはジェスチャー検出器です:

 SimpleOnGestureListener simpleOnGestureListener
       = new SimpleOnGestureListener(){
  @Override
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
       float velocityY) {
                boolean result;
              //DECIDE UNDER WHAT SPEED OF SWIPING U WANT TO MAKE THE CALL
                ...
                ...
           return result;
     }

  @Override
  public boolean onDown(MotionEvent e)
  {

     return true;
  }

       };
//AND FINALLY

    final GestureDetector gestureDetector
           = new GestureDetector(simpleOnGestureListener);
于 2012-11-16T11:36:52.473 に答える