2015-04-20 2 views
0

Я разрабатываю приложение, которое, когда я нажимаю кнопку, запускает новое действие (ContactList.java), которое содержит список, называемый mContactList. Когда действие начинается, я хочу, чтобы первый элемент списка был автоматически сфокусирован.Фокус 1-й элемент в списке при запуске деятельности android

Я пытался что-то вроде этого:

ContactList.java

mContactsList.requestFocus(mContactsList.getFirstVisiblePosition()); 

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

selected_rectangle.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <stroke 
     android:color="@color/blue" 
     android:width="5dp"/> 
</shape> 

selector_contact_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" 
      android:drawable="@drawable/selected_rectangle"/> </selector> 

По какой-то причине этот код работы и это не распространяется, я не в состоянии установить фокус на первом элементе списка (так как ни прямоугольник не появится вокруг первой пункт списка).

Может ли кто-нибудь дать мне подсказки о том, что происходит?

+0

mКонтактыList.set Выбор (firstVisiblePosition) должен сфокусироваться на первом элементе. – Napolean

+0

Я пробовал это раньше. Все еще не работает. – insrod

ответ

0

Пожалуйста, обратите внимание, что настройка фокусировки и настройки выбора являются две разные вещи .. и я думаю, что вы имеете в виду второе, если это так, попробуйте следующее:

listViewName.setSelection(positionOfItem); 

, если это не сработает, попробуйте requestFocusFromTouch() перед вызовом setSelection() способ.

, и если это не сработает, попробуйте следующее:

listViewName.setItemChecked(positionOfItem, true); 

Или это:

listViewName.smoothScrollToPosition(positionOfItem); 

Для других решений попробовать ответы в этой ссылке: Android ListView setSelection() does not seem to work

+0

, что не работает для меня. – insrod

+0

Вы попробовали 'listViewName.setSelection (0)'? –

+0

есть. и listViewName.setSelection (1). CouId метод setSelection (int pos) подходит только для списка флажков? – insrod

Смежные вопросы