You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android中ListView的ItemSelected事件无法捕获问题排查

解决Xamarin Android ListView点击事件不触发问题

问题原因

你使用了Android.Resource.Layout.SimpleListItemMultipleChoice布局,该布局内置的CheckedTextView会拦截ListView的点击事件,导致ItemSelected无法触发;同时未给ListView启用多选模式,进一步导致事件逻辑异常。

解决方案

根据你的需求选择以下方案:

方案1:不需要多选功能,更换布局

将Adapter的布局替换为不带可点击控件的默认布局,比如SimpleListItem1:

ArrayAdapter adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, ListOfPhoneNumbers);
PhoneNumberList.Adapter = adapter;

之后使用ItemClick事件捕获点击(比ItemSelected更直观):

PhoneNumberList.ItemClick += (sender, e) =>
{
    string selectedItem = ListOfPhoneNumbers[e.Position];
    // 在这里编写点击后的处理逻辑
};

方案2:需要多选功能,正确配置多选模式

  1. 先给ListView启用多选模式:
PhoneNumberList.ChoiceMode = ListView.ChoiceMode.Multiple;
  1. 监听ItemChecked事件捕获选中状态变化:
PhoneNumberList.ItemChecked += (sender, e) =>
{
    bool isChecked = e.IsChecked;
    string targetItem = ListOfPhoneNumbers[e.Position];
    // 处理选中或取消选中的逻辑
};

如果需要监听点击动作(不管选中状态是否变化),也可以用ItemClick事件:

PhoneNumberList.ItemClick += (sender, e) =>
{
    string selectedItem = ListOfPhoneNumbers[e.Position];
    // 编写点击处理逻辑
};

内容的提问来源于stack exchange,提问作者Prescott Chartier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:45:44