列表视图.SelectedItemPosition返回-1总是
本文关键字:总是 返回 SelectedItemPosition 视图 列表 | 更新日期: 2023-09-27 18:01:24
我试图在Xamarin的ListView中获得单击项的位置,但使用SelectedItemPosition
总是返回-1。
ListView lsvSearch;
List<SearchResultItem> searchResults;
protected override void OnCreate(Bundle bundle){
...
lsvSearch = FindViewById<ListView>(Resource.Id.lsvSearch);
lsvSearch.ItemClick += LsvSearch_ItemClick;
...
}
private void LsvSearch_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
....
Bundle valuesForActivity = new Bundle();
valuesForActivity.PutInt("placeId", searchResults[lsvSearch.SelectedItemPosition].resultId); // lsvSearch.SelectedItemPosition always returns -1
Intent resultIntent = new Intent(this, typeof(AboutPlace));
....
}
我该如何解决这个问题?我怎样才能得到点击项目的位置,而不是-1?
使用AdapterView.ItemClickEventArgs
参数。它包含了很多有用的信息,在这里查看该类的参考:https://developer.xamarin.com/api/type/Android.Widget.AdapterView+ItemClickEventArgs/
对于您的特定问题,如果您想要所选项目的位置,则使用此:e.Position
。
private void LsvSearch_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
....
Bundle valuesForActivity = new Bundle();
valuesForActivity.PutInt("placeId", searchResults[e.Position].resultId); // lsvSearch.SelectedItemPosition always returns -1
Intent resultIntent = new Intent(this, typeof(AboutPlace));
....
}
在Windows窗体中,可以这样访问选定的索引:
int index = lsvSearch.SelectedIndices[0];
这只适用于MultiSelect
设置为false
!否则,它将只给你第一个索引。
另一种可能是:
int index = lsvSearch.FocusedItem.Index;
请尝试并评论它是否也适用于Xamarin。我会等你的。(否则我删除这个答案)