【问题标题】:Xamarin Forms - How to get the index number from ListView SelectedItemXamarin Forms - 如何从 ListView SelectedItem 获取索引号
【发布时间】:2017-09-29 22:14:26
【问题描述】:

我完全坚持这一点。 我在 XAML 代码中定义了一个 ListView,但我需要找出我正在点击的所选项目的 int 是什么。

我的列表视图名为PeopleList 当我点击一个单元格时,我需要获取该单元格的索引号。

所以我可以做 PeopleList.SelectedItem 但这会返回一个对象 - 而不是一个 int。

我已经尝试解析和转换以及所有对我来说合乎逻辑的东西。

有人可以告诉我如何获取 selectedItem 的 int 吗?

【问题讨论】:

标签: listview xamarin xamarin.forms int selecteditem


【解决方案1】:

ItemTapped 事件的事件处理程序中,执行以下操作:

private void Handle_ItemTapped (object sender, Xamarin.Forms.ItemTappedEventArgs e)
{
    var index = (myListView.ItemsSource as List<Person>).IndexOf (e.SelectedItem as Person);
}

确保集合的类型正确。 这不是最优雅的方式,但确实有效。

【讨论】:

  • 谢谢你 - 它工作得很好 :-) 我在一个阶段有逻辑,但错过了作为 List 的 itemsSource。您知道为什么您必须指定您的项目来源是什么原因吗,即使您专门将事件链接到列表?
  • 但是如果我的列表中有重复元素怎么办......在那种情况下如何获得正确的索引???
【解决方案2】:

我认为你可以在 List 中搜索 SelectedItem。

例如,在您的 ViewModel 中有一个 ObservableCollection(例如 MyList)。

您已(在 Xaml 中)将此集合绑定到您的 PeopleList

然后你可以做类似的事情

int myindex = MyList.IndexOf(SelectedItem);

例如

    ObservableCollection<string> l = new ObservableCollection<string>();
    l.Add("AAA");
    l.Add("BBB");
    l.Add("CCC");
    int idx = l.IndexOf("BBB");
    System.Diagnostics.Debug.WriteLine("idx = " + idx.ToString());

【讨论】:

  • 当我这样做时它返回 -1 _person 是我的 ObservableCollection - int myindex = _person.IndexOf(PeopleList.SelectedItem as Person); System.Diagnostics.Debug.WriteLine($"####### - {myindex}");
  • 您确定您没有修改您的收藏吗?你试过调试吗?您还可以使用 foreach... 看看 SelectedItem 是否存在于带有 foreach 的 _person 中
【解决方案3】:

你的列表视图是 lstInfo 使用 ItemSelected 来选择列表视图

lstInfo.ItemSelected += (sender, e) =>
                {
                    //get all data in you row in the listview "lstinfo"
                    //And MFoto is you Model {get; set}
                    var item = e.SelectedItem as MFoto;

                    //View id for you listview
                    DisplayAlert("Data", item.Id, "OK");

                };

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2021-05-12
    • 2018-04-02
    • 2015-02-27
    • 2017-01-05
    • 2021-02-20
    • 2021-10-27
    • 2019-11-09
    相关资源
    最近更新 更多