У меня есть ListView лекарств, которые используют CursorAdapter. Моя цель - получить ссылку на Курсор выбранного элемента, когда пользователь нажимает кнопку отправки, но я все равно получаю нулевое значение. Вот мой текущий код:Какие действия запускаются в элементе, выбранном в ListView?
mSubmitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor selectedMedication = (Cursor) mMedicationListView.getSelectedItem();
if(selectedMedication != null)
{
MedicationSelectionListener activity = (MedicationSelectionListener) getActivity();
activity.onMedicationSelected(new Medication(selectedMedication));
} else{
Toast.makeText(getActivity(), "Must select a medication.", Toast.LENGTH_SHORT).show();
}
}
});
Когда это выполняется, selectedMedication
всегда нуль. Я внедрил drawable selector.xml-файл, который меняет цвет фона элемента при его нажатии, и это работает отлично, поэтому у меня создалось впечатление, что щелчка по элементу было достаточно.
Я также попытался следующие, установив выбранной переменной лекарства, каждый раз, когда пункт щелкнул:
mMedicationListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor c = (Cursor) mMedicationListView.getItemAtPosition(position);
if(c.moveToFirst())
mSelectedMedication = new Medication(c);
}
});
Это работало хорошо, но я чувствовал, что предварительно кучу бессмысленных операций, когда все, что я заинтересован in - окончательный выбранный элемент. Должен ли щелкнуть элемент триггером mMedicationListView.onItemSelected()
? Если нет, какое действие используется для обеспечения того, чтобы это произошло?
Что вы подразумеваете под «кучей бессмысленных операций»? – Emmanuel
@ Emmanuel Предположим, у меня есть большой список лекарств, и по какой-то причине пользователь выбирает вверх и вниз каждый из них. Каждый раз, когда я меняю это поле класса (это не тяжелая операция, я получаю это), но зачем тратить время на это, когда я должен просто прочитать выделенный элемент в конце? – AdamMc331