質問

ListViewが範囲外にスイプされているかどうかをどのように検出することができるのかどうかを教えてください。ListViewには1つの項目があります。また、ユーザーがアップまたはダウンし、それに応じてListViewを上下にして、その上下に空のスペースを表示するときに検出する必要があります。そしてこの瞬間に、私は私のListViewのアダプターを更新してそこに新しいアイテムを渡すべきです。

私はこのようなGestureListenerでそれを実装しようとしました:

 class MyGestureListener extends SimpleOnGestureListener implements OnTouchListener
        {

        public boolean onDown(MotionEvent arg0) {
            InteractionsAdapter adapter = new InteractionsAdapter(InteractionsActivityAlt.this,
                    R.layout.interactions_item, DashboardActivityAlt.messagesExport,DashboardActivityAlt.messagesExport.size()-2);
            adapter.notifyDataSetChanged();
            Log.i("asd","sdas");
            return true;
        }
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            if(Math.abs(e1.getY()-e2.getY()) > 250) 
                return false;               
            if(e1.getX() - e2.getX() > 120// && Math.abs(velocityX) > 200
                    ){

              //mSwipeDetected = Action.RL;
              Log.d("one", "Coords: x=" + e1.getX() + ",y=" + e2.getY());
                //do something...
             return true;
            }
            else if(e2.getX() - e1.getX() > 120// && Math.abs(velocityX) > 200
                    ){

            // mSwipeDetected = Action.LR;
               Log.d("two", "Coords: x=" + e1.getX() + ",y=" + e2.getY());
                //do something...
             return true;
            }
            return false;
        }
        public void onLongPress(MotionEvent arg0) {
             AlertDialog.Builder builder = new AlertDialog.Builder(InteractionsActivityAlt.this);
            builder.setMessage("Are you sure to choose timezone  "+"  ?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {

               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {

                    dialog.cancel();
               }
           });
        AlertDialog alert = builder.create();
        alert.show();

        }
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float arg2,
                float arg3) {


            float pos = e2.getY() - e1.getY();
            if (pos < -170 & pos > -200)
            {


                mSwipeDetected = Action.BT;

                try {

                    Log.i("gesturelistener", "Move down");
                } 

            catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
            if (pos > 170 & pos < 200)
            {

                mSwipeDetected = Action.BT;

                try {

                    Log.i("gesturelistener", "Move up");
                } 

            catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

            return true;
        }
        public void onShowPress(MotionEvent arg0) {
            // TODO Auto-generated method stub

        }
        public boolean onSingleTapUp(MotionEvent arg0) {
            // TODO Auto-generated method stub
            return false;
        }

         public boolean onTouchEvent(MotionEvent me)
         {

         return gestureScanner.onTouchEvent(me);
         }
        public boolean onTouch(View arg0, MotionEvent arg1) {
            if (arg1.getAction()==MotionEvent.ACTION_UP)
                arg0.setBackgroundColor(Color.WHITE);
            return false;
        } 
        }
.

スワイプアップまたはダウンアクションを検出しますが、ListViewが範囲外になって空のスペースを表示しているときではありません。

役に立ちましたか?

解決

私は方法で私の問題を解決しました:

@Override
public boolean onSingleTapUp(MotionEvent e) {
   return true;
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top