Android How to get position of selected item from gridview without using onclicklistner, using ontouchlistner instead

Posted by zonemikel on Stack Overflow See other posts from Stack Overflow or by zonemikel
Published on 2011-02-10T04:09:29Z Indexed on 2011/02/10 7:25 UTC
Read the original article Hit count: 219

Filed under:
|
|
|

I have a gridview, I need to do stuff on motioneven.action_down and do something for motioneven.action_up ... using onclicklistener is great but does not give me this needed functionality.

Is there anyway to easily call the gridview and get its selected item in a ontouchlistener ? I've been having limited success with making my own implementation. Its hard to get the right x,y because if i call the child it gives me the x and y relative to the child so a button would be 0,0 to 48,48 but it does not tell you the actual location on the screen relative to the gridview or the screen itself.

this is what i've been doing, its partially working so far.

Grid.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    int x = (int)event.getX();
                    int y = (int)event.getY();
                    int position = 0;
                    int childCount = Grid.getChildCount();

                    Message msg = new Message();
                    Rect ButtonRect = new Rect();
                    Grid.getChildAt(0).getDrawingRect(ButtonRect); 
                    int InitialLeft = ButtonRect.left + 10;
                    ButtonRect.offsetTo(InitialLeft, ButtonRect.top);
                    //

                    while(position < childCount){
                        if(ButtonRect.contains(x,y)){break;}
                        if(ButtonRect.right + ButtonRect.width() > Grid.getWidth())
                        { ButtonRect.offsetTo(InitialLeft, ButtonRect.bottom);}
                        position++;
                        ButtonRect.offsetTo(ButtonRect.right, ButtonRect.top);

                    }

                    msg.what = position;
                    msg.arg1 = ButtonRect.bottom;
                    msg.arg2 = y;
                    cHandler.sendMessage(msg);
                }// end if action up

                if (event.getAction() == MotionEvent.ACTION_UP) {
                }
                return false;
            }
        });

© Stack Overflow or respective owner

Related posts about java

Related posts about android