我正在尝试在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?
答案 0 :(得分:0)
在Windows窗体中,可以像这样访问所选索引:
int index = lsvSearch.SelectedIndices[0];
仅当MultiSelect
设置为false
时才有效!否则它只会给你第一个索引。
另一种可能性似乎是:
int index = lsvSearch.FocusedItem.Index;
请尝试并评论它是否也适用于Xamarin。我等了。 (否则我删除了这个答案)
答案 1 :(得分:0)
使用您的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));
....
}