有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    so I was under the impression that clicking the item was enough.

    点击不是带有ListView的选择。选择将在以下任一情况下发生:

    • 以编程方式设置选择,或

    • 用户使用五向导航选项(例如,D-pad、轨迹球、箭头键)并按向上/向下键来移动突出显示栏

    all I am interested in is the final selected item

    默认情况下,ListView是一个命令小部件。当用户点击ListView中的一行时,你的应用程序应该去做一些事情,通常是在一路上去掉ListView

    如果用户正在选择某个内容,而列表和选项仍在屏幕上(例如,主细节模式,选择州/省作为填写地址的一部分),那么您应该使用选择模式。这可能是单选模式(通常用右边缘的单选按钮表示)、多选模式(通常用右边缘的复选框表示)或多选模式(通常用“激活”状态表示,设置持续高亮显示,通常保留用于主细节类场景)

    不要试图让“选择”过多地表示“选择”。听起来像是把ListView作为更大的东西的一部分,用户正在做出选择,所以使用选择模式