2 回答
TA贡献1780条经验 获得超1个赞
您从Xamarin.Forms.ListView.SelectedItemListView的属性中获取所选项目。如果您的 ListView.ItemSource 是允许使用 IndexOf 的类型,您现在可以执行类似的操作
int position = (yourlistview.ItemSource as ObservableCollection<your type>).IndexOf(yourlistview.SelectedItem)
更新:
好的,我想我明白你想要什么。在大多数情况下,当前使用列表视图时会显示多个项目。所以他们不存在一个单一的索引,但我想你只是想知道列表的最后一项是否可见/用户是否已经滚动到最后?
如果是这样,ListView 有一个 ItemAppearing 事件。例如,如果用户滚动浏览前 100 个项目,我会使用它从网络源加载更多数据。你可以做这样的事情
listview.ItemAppearing += listviewItemAppearing;
listview.ItemDisappearing += listviewItemDisappearing;
bool m_scrolledToEnd;
private void listviewItemDisappearing(object sender, ItemVisibilityEventArgs e)
{
if(e.Item == yourlastiem)
m_scrolledToEnd = false;
}
private void listviewItemAppearing(object sender, ItemVisibilityEventArgs e)
{
if(e.Item == yourlastiem)
m_scrolledToEnd = true;
}
如果您真的需要知道是否显示了特定索引,您可以创建一个List<int> m_idxlist; 并在出现的事件中将项目的索引添加到列表中,并在消失的事件中从列表中删除项目的索引。然后您将拥有一个列表,其中存储了当前显示的项目的所有索引。
TA贡献1864条经验 获得超6个赞
从文档
ListView 支持一次选择一项。选择默认开启。当用户点击一个项目时,会触发两个事件:ItemTapped 和 ItemSelected。请注意,点击同一项目两次不会触发多个 ItemSelected 事件,但会触发多个 ItemTapped 事件。另请注意,如果取消选择项目,将调用 ItemSelected。
要检测选择一个项目,您可以添加一个方法,onSelection:
void OnSelection (object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null) {
return; //ItemSelected is called on deselection, which results in SelectedItem being set to null
}
DisplayAlert ("Item Selected", e.SelectedItem.ToString (), "Ok");
//((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state.
}
要禁用选择,只需将 selectedItem 设置为 null:
SelectionDemoList.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;
};
- 2 回答
- 0 关注
- 225 浏览
添加回答
举报