2016-04-01 16 views
0

SwipeMenuListViewをどのようにカスタマイズして追加できますか?SwipeMenuListViewのSwipeMenuItemに垂直に3つのアイコンを設定するにはどうすればいいですか?

ユーザーがリストビューから項目をスワイプすると、メニューに3つのアイコンが縦に表示され、3つのアイコンが表示されます。

いずれも同じことに役立ちますか?

ありがとうございます。あなたが任意の項目をスワイプするには、このクラスを使用することができます enter image description here

+0

ありませんIを実装試したことはありませんが、私はやりたくありません。 –

+0

あなたのコードを投稿した場合にのみ助けることができます。あなたがこれに努力するよう気にすることができないなら、他の人たちには期待しないでください。 – SubliemeSiem

+0

私はビューポケベルを使ってそのような機能を達成しました。 –

答えて

1

この画像のように

...

パブリッククラスSwipeDetectorがView.OnTouchListener {

private static final int MIN_DISTANCE = 300; 
    private static final int MIN_LOCK_DISTANCE = 30; // disallow motion intercept 
    private boolean motionInterceptDisallowed = false; 
    private float downX, upX; 
    private AudioObjectHolder holder; 
    private int position; 

    public SwipeDetector(AudioObjectHolder h, int pos) { 
     holder = h; 
     position = pos; 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      downX = event.getX(); 
      return true; // allow other events like Click to be processed 
     } 

     case MotionEvent.ACTION_MOVE: { 
      upX = event.getX(); 
      float deltaX = downX - upX; 

      if (Math.abs(deltaX) > MIN_LOCK_DISTANCE && listView != null && !motionInterceptDisallowed) { 
       listView.requestDisallowInterceptTouchEvent(true); 
       motionInterceptDisallowed = true; 
      } 

      if (deltaX > 0) { 
       holder.deleteView.setVisibility(View.GONE); 
      } else { 
       // if first swiped left and then swiped right 
       holder.deleteView.setVisibility(View.VISIBLE); 
      } 

      swipe(-(int) deltaX); 
      return true; 
     } 

     case MotionEvent.ACTION_UP: 
      upX = event.getX(); 
      float deltaX = upX - downX; 
      if (Math.abs(deltaX) > MIN_DISTANCE) { 
       // left or right 
       swipeRemove(); 
      } else { 
       swipe(0); 
      } 

      if (listView != null) { 
       listView.requestDisallowInterceptTouchEvent(false); 
       motionInterceptDisallowed = false; 
      } 

      holder.deleteView.setVisibility(View.VISIBLE); 
      return true; 

     case MotionEvent.ACTION_CANCEL: 
      holder.deleteView.setVisibility(View.VISIBLE); 
      return false; 
     } 

    return true; 
    } 

    private void swipe(int distance) { 
     View animationView = holder.mainView; 
     RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) animationView.getLayoutParams(); 
     params.rightMargin = -distance; 
     params.leftMargin = distance; 
     animationView.setLayoutParams(params); 
    } 

    private void swipeRemove() { 
     remove(getItem(position)); 
     notifyDataSetChanged(); 
    } 
} 

}

+0

AudioObjectHolderとは何ですか?私のクラスでSwipeDetectorを使用するにはどうしたらいいですか? –

+0

AudioObjectHolderはあなたのビューを保持しているクラスです。私はチュートリアルのリンクチェックを行い、理解しようとしています.. http://www.jayrambhia.com/blog/swipe-listview/ – Dinesh

関連する問題