首页 > 解决方案 > 需要使用自定义适配器和上下文菜单从列表视图中获取项目

问题描述

例如,我需要获取列表中的第二个患者,它始终是第一个位置,而我的 int 始终为 0,当我单击任何位置时,无法获得真实位置,这是我的代码:

public void setupGUI() {
    listView = findViewById(R.id.listView);
    if (getIntent().getParcelableExtra(Constants.PARCELABLE_TAG) != null) {
        user = getIntent().getParcelableExtra(Constants.PARCELABLE_TAG);
        GetDoctor gd = new GetDoctor(DoctorMenu.this, user.getId(), user.getToken());
        gd.execute();


        if (user != null) {
            userToken = user.getToken();
            FillPatientsTask fpt = new FillPatientsTask(DoctorMenu.this, this, userToken, null);
            fpt.execute();

        } else {
            userToken = "";
            Toast.makeText(this, "User was null", Toast.LENGTH_SHORT).show();
        }
    }
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            numberPatient = position;
        }
    });
    registerForContextMenu(listView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    AdapterView.AdapterContextMenuInfo info =
            (AdapterView.AdapterContextMenuInfo) menuInfo;

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_patient_menu, menu);
    patient = items.get(numberPatient);
}

标签: androidlistviewcontextmenuonitemclicklistener

解决方案


这将是zero为什么集合以第一个位置开头的原因0 position。对于您的情况,请尝试如下:

numberPatient = position + 1;

推荐阅读