項目として連絡先番号を含むリストビューがあります。
ユーザーが連絡先に対して左スワイプ(左方向へのスワップ)を実行すると、アプリがその連絡先の呼び出しを開始するようにします。
連絡先で左スワイプと右スワイプを処理/検出する方法と、リストビューのスワイプイベントが実行されたアイテムを検出する方法を知りたいです。
ありがとう
Android でのジェスチャーの処理に関するチュートリアルがあります。それをチェックしてください!!
メソッドを使用して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);