GridView Получить элемент на ощупь - PullRequest
4 голосов
/ 21 июня 2011

Я пытаюсь выбрать элемент, когда касаюсь вида сетки, я не могу использовать onClick, так как он запускает другое действие.То, чего я пытаюсь добиться, - это иметь возможность перемещать элементы в сетке, и так как я не могу найти способ сделать это, я пытаюсь найти способ ..

Так что да ... Есть лиспособ узнать, к какому предмету «прикоснулись», я пытался использовать Rect, и он не работал должным образом.

(Могу ли я просто уточнить .. Я не могу использовать onItemClick для этого ..)

Любая помощь будет отличной, спасибо!:)

Ответы [ 2 ]

19 голосов
/ 11 декабря 2012

Чтобы получить предмет, который был «тронут»

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);
    }
}
6 голосов
/ 21 июня 2011

Если предложение Glendon Trullinger об использовании onLongClickListener недостаточно для вас, попробуйте GridView # pointToPosition (int x, int y) , который можно вызвать из View.OnTouchListener, используя MotionEvent SX и Y координаты. С этой позицией вы можете получить дочернее представление в этой позиции, используя этот ответ , и / или вы можете получить сам элемент адаптера, используя AdapterView # getItemAtPosition (int)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...