Как получить положение выбранного элемента в gridview или определить освобождение ключа с помощью onItemClick? - PullRequest
0 голосов
/ 09 февраля 2011

Я должен быть в состоянии обнаружить нажатие и отпускание кнопки, но у меня также должна быть позиция элемента в виде сетки, к которой происходит прикосновение.У меня в основном есть gridview, который является элементом управления d-pad.Поэтому, когда пользователь нажал на него, мне нужно, чтобы он отправил «go», а когда он отпустит, мне нужно, чтобы он послал «stop»

с этим ниже, нет никакого способа узнать, когда он отрывает кнопкучто я знаю!).

    Grid.setAdapter(new ImageAdapter(c, mThumbIds));
    Grid.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Message msg = new Message();
            msg.what = what;
            msg.arg1 = position;
            cHandler.sendMessage(msg);
        }
    });

но если я использую список касаний, я не могу сказать, какой элемент в сетке они выбрали

Grid.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Message msg = new Message();
                    msg.what = 255;
                    msg.arg1 = 255;
                    cHandler.sendMessage(msg);
                }

                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                        Message msg = new Message();
                        msg.what = what;
                        msg.arg1 = 55;
                        cHandler.sendMessage(msg);
                }
                return false;
            }
        });

ваше время очень ценится !!

/// ну, это то, что я пытался сделать, я никогда не смогу получить границы различных частей вида сетки.R.getX и т. Д. Всегда возвращает 0. Если у меня есть идентификатор ресурса, как я могу вытянуть его прямоугольник?

Grid.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Rect r = new Rect();
                    ImageView imageView = new ImageView(c);

                    for(int n: mThumbIds){
                        imageView.setImageResource(n);
                        r = imageView.getDrawable().getBounds();
                        if(r.contains((int)event.getX(),(int)event.getY()))
                        {
                            Message msg = new Message();
                            msg.what = what;
                            msg.arg1 = n;
                            msg.arg2 = (int)event.getRawY();
                            cHandler.sendMessage(msg);
                            break;
                        }else{
                            Message msg = new Message();
                            msg.what = what;
                            msg.arg1 = r.centerX();
                            msg.arg2 = n;
                            cHandler.sendMessage(msg);

                        }
                    }// end for
                }// end if action up

1 Ответ

0 голосов
/ 09 февраля 2011

майкл, ну у вас есть два варианта такой реализации

  • Установить onclickListener на каждом из виджеты в каждой сетке Пункт (eg.Textview / ImageView)

OR

И все готово!

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