GridView获取项目

Tom*_*m O 4 java grid android

我试图在触摸gridview时选择项目,我无法使用onClick,因为它启动了另一个活动.我想要实现的是能够在gridview中移动项目,因为我无法找到一种方法来做到这一点我正试图让路...

所以是啊..有没有办法得到哪个项目被"触摸",我尝试使用一个矩形,它没有正常工作..

(我可以详细说明..我不能使用onItemClick这个..)

任何帮助都会很棒,谢谢!:)

PS3*_*376 19

获取"触摸"的项目

gridView.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent me) {

            int action = me.getActionMasked();  // MotionEvent types such as ACTION_UP, ACTION_DOWN
            float currentXPosition = me.getX();
            float currentYPosition = me.getY();
            int position = gridView.pointToPosition((int) currentXPosition, (int) currentYPosition);

            // Access text in the cell, or the object itself
            String s = (String) gridView.getItemAtPosition(position);
            TextView tv = (TextView) gridView.getChildAt(position);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 它不简单也不优雅.gridView.getChildAt(position)将返回null,因为GridView重用了它的元素,就像ListView对行一样. (3认同)

Joe*_*Joe 6

如果Glendon Trullinger关于使用onLongClickListener的建议对你来说还不够,可以尝试使用'sx和y坐标从Grid调用的GridView#pointToPosition(int x,int y).使用该位置,您可以使用此答案获取该位置的子视图,和/或您可以使用AdapterView#getItemAtPosition(int)获取适配器项目本身View.OnTouchListenerMotionEvent