У меня возникли проблемы с созданным мной ListView: я хочу, чтобы элемент был выбран, когда я нажимаю на него.Android ListView: как выбрать элемент?
Мой код это выглядит следующим образом:
protected void onResume() {
...
ListView lv = getListView();
lv.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
Log.v(TAG, "onItemSelected(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
public void onNothingSelected(AdapterView<?> adapterView) {
Log.v(TAG, "onNothingSelected(...) => selected: " + getSelectedItemPosition());
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
lv.setSelection(pos);
Log.v(TAG, "onItemClick(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
});
...
}
Когда я запускаю это и нажмите например, по второму вопросу (т.е. позиция = 1) я получаю:
04-03 23:08:36.994: V/DisplayLists(663): onItemClick(..., 1,...) => selected: -1
т.е. даже если OnItemClickListener вызывается с правильным аргументом и вызывает setSelection (1), нет выбранного элемента (и, следовательно, также OnItemSelectedListener. onItemSelected (...) никогда не вызывается), а getSelectedItemPosition() все еще дает -1 после набора setSelection (1).
Что мне не хватает?
Майкл
PS .: Мой список делает у> = 2 элементов ...
Почему это было остановлено, точно? Он решает проблему плакатов getSelectedItemPosition(), которая никогда не меняется. Да, если все, что он хочет, это предмет, о котором идет речь, то getItemAtPosition в onItemClick(), безусловно, проще. choiceMode, однако, существует для того, чтобы ** показать ** пользователя, который выбран в данный момент, а также предоставить программисту доступ к нему. – JRaymond
Я добавил режим выбора, как описано (в обоих вариантах), но без изменений! OnItemClickListener все еще не вызван. И это даже несмотря на то, что я получаю реакцию на экране, т. Е. Элемент вскоре становится фиолетовым, а затем снова возвращается к белому. Странно, я * могу * выбирать элементы, нажимая кнопки вверх и вниз (а затем вызывается OnIemSelectListener), но явно не через OnItemClickListener. – mmo
Подождите, так что OnItemClick никогда не называется? OnItemSelect прослушиватель настроен только для материала trackPad/up down - он не отвечает на клики, и я не знаю, ответит ли он на ручной вызов setSelection – JRaymond