2011-12-28 3 views
0

У меня возникла такая общая проблема, но я все еще не могу ее решить. Когда активность моего приложения запущена, устройство по умолчанию находится в касании.Невозможно выбрать элемент ListView с помощью setFocusableInTouchMode (true)

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

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

       button.setOnClickListener(
        new OnClickListener { 

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

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

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

ответ

0

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

Согласно документации setSelection:

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

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

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

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


Для возможных решений увидеть следующее сообщение: Highlight ListView selected row