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 關注
- 279 瀏覽
添加回答
舉報