Читали ли вы 'Hello ListView demo' ?Это демонстрирует, как использовать OnItemClickListener
.Теперь это может быть не совсем то, что вам нужно, но с точки зрения реализации, добавление OnItemSelectedListener
идентично:
listview.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// do something...
}
}
Редактирует согласно комментариям ниже.
Вы можете попробовать явно установить выделение для определенного элемента после заполнения списка, чтобы увидеть, вызывает ли это OnItemSelected.Предполагая, что в вашем списке есть по крайней мере два элемента:
listview.setSelection(1); // select second item
// Edit2: На самом деле, это, вероятно, не будет иметь значения, прочитав документацию для setSelection .
Устанавливает текущий выбранный элемент. Если в сенсорном режиме, элемент не будет выбран , но он все равно будет располагаться надлежащим образом.(...)
В качестве альтернативы вы можете отслеживать выбранные элементы самостоятельно, используя OnItemClickListener, при условии, что при нажатии на элемент не выполняется никаких других действий - что имеет смысл на устройствах с сенсорным экраном, так какнет никакого способа провести различие между «выбором» и «щелчком».
List<Integer> mSelectedIndices = new ArrayList<Integer>();
//...
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (!mSelectedIndices.contains(position)) {
mSelectedIndices.add(position);
} else {
mSelectedIndices.remove((Integer)position);
}
}
}
Я предполагаю, что в какой-то момент вы захотите что-то сделать с выбранными элементами, так что вы можете просто перебратьПриведенный выше список и захватить объекты, которые были нажаты / выбраны.