Не могу выбрать элемент ListView с помощью setFocusableInTouchMode (true) - PullRequest
0 голосов
/ 28 декабря 2011

Я застрял с такой распространенной проблемой, но до сих пор не могу ее решить.Когда работа моего приложения началась, устройство по умолчанию находится в сенсорном режиме.

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

... 
                // my activity, inside onCreate()
                myListView.setFocusable(true);
                myListView.setFocusableInTouchMode(true);

                button.setOnClickListener(
                    new OnClickListener {

                        public void onClick(View v) {
                            myListView.setSelection(specifiedPosition);
                        }
                    }
                );
                ...

Но даже с этой логикой ListView просто устанавливает указанный элемент в верхнюю часть самого себя и не выделяет их.

Я также пытаюсь использовать requestFocus (), но это не помогло мне.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 29 декабря 2011

Краткий ответ: setSelection не делает то, что вы хотите - это означает другое.

В соответствии с документацией setSelection:

Если в сенсорном режиме, элементне будет выбран, но все равно будет позиционирован соответствующим образом.

Вот почему вы видите позиционирование.

Также см. документацию по сенсорному режиму: http://developer.android.com/resources/articles/touch-mode.html

В сенсорном режиме нет фокуса и выбора. Любой выбранный элемент в списке в сетке становится невыбранным, как только пользователь входит в сенсорный режим.Точно так же любые сфокусированные виджеты становятся не сфокусированными, когда пользователь входит в сенсорный режим.На рисунке ниже показано, что происходит, когда пользователь касается списка после выбора элемента с помощью трекбола.


Возможные решения см. В следующем сообщении: Выделение ListView выбранной строки

...