java在ListView中选择了什么操作?
我有一个使用游标适配器的药物列表视图。我的目标是在用户按下submit按钮时获得对所选项目光标的引用,但我一直得到一个空值。以下是我目前的代码:
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
始终为空。我实现了一个可拖动选择器。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);
}
});
这很好,但我觉得它执行了一系列毫无意义的操作,而我感兴趣的只是最终选定的项目。点击一个项目是否应该触发mMedicationListView.onItemSelected()
?如果没有,采取什么行动来确保这一点
# 1 楼答案
点击不是带有
ListView
的选择。选择将在以下任一情况下发生:以编程方式设置选择,或
用户使用五向导航选项(例如,D-pad、轨迹球、箭头键)并按向上/向下键来移动突出显示栏
默认情况下,
ListView
是一个命令小部件。当用户点击ListView
中的一行时,你的应用程序应该去做一些事情,通常是在一路上去掉ListView
如果用户正在选择某个内容,而列表和选项仍在屏幕上(例如,主细节模式,选择州/省作为填写地址的一部分),那么您应该使用选择模式。这可能是单选模式(通常用右边缘的单选按钮表示)、多选模式(通常用右边缘的复选框表示)或多选模式(通常用“激活”状态表示,设置持续高亮显示,通常保留用于主细节类场景)
不要试图让“选择”过多地表示“选择”。听起来像是把
ListView
作为更大的东西的一部分,用户正在做出选择,所以使用选择模式