亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用戶在 listview xamarin 表單中關注哪個項目

用戶在 listview xamarin 表單中關注哪個項目

C#
catspeake 2021-10-09 16:15:06
我是一名學習 xamarin 表單的學生,我正在嘗試創建一個基本的聊天應用程序,我想知道如何在用戶正在觀看的列表視圖中獲取當前項目的位置。當收到一條新消息時,我想知道用戶是否在底部,如果底部聚焦新消息,如果不在底部,則只需通過向其添加焦點來添加不。
查看完整描述

2 回答

?
慕神8447489

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; 并在出現的事件中將項目的索引添加到列表中,并在消失的事件中從列表中刪除項目的索引。然后您將擁有一個列表,其中存儲了當前顯示的項目的所有索引。


查看完整回答
反對 回復 2021-10-09
?
慕尼黑的夜晚無繁華

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;

};


查看完整回答
反對 回復 2021-10-09
  • 2 回答
  • 0 關注
  • 279 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號