我有一个使用CursorAdapter的药物ListView。我的目标是在用户按下提交按钮时获取对所选项目的光标的引用,但我一直得到空值。这里是我当前的代码:在ListView中,哪些操作触发onItemSelected?
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
始终为空。我已经实现了一个可绘制的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 2015-02-11 17:36:34
@Emmanuel比方说,我有一个很大的列表药物,并由于某种原因,用户上下选择每一个。每次我改变那个班级的领域(这不是一个沉重的操作,我都明白了),但是为什么当我应该能够在最后阅读选定的项目时浪费时间呢? – AdamMc331 2015-02-11 17:38:30