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

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

關于Listview控件的selectedindexchanged事件

關于Listview控件的selectedindexchanged事件

肥皂起泡泡 2018-08-15 10:09:18
      各位大佬,最近用戶反饋程序的圖像加載慢,而且影響了數據顯示。具體情況是這樣的:界面上一個重寫的Listview用來顯示用戶信息,然后下邊有一個自定義的控件原來加載當前選中行用戶的圖像,用selectedindexchanged事件綁定的,后來發現圖像過多時加載速度就變慢,這是因為查詢數據庫導致的,和圖像加載本身無關。但是切換選中行時,從點擊切換到切換結束的幾秒中,listview的切換的這兩行被清空了,重繪的數據文字和選中背景色都消失了,下面的Image控件圖像加載完畢之后才恢復正常,感覺好像重繪的過程被暫停了,影響用戶體驗。同樣的控件,用戶圖像數據少,查詢速度比較快的時候切換行重繪救很快,肉眼不可見,這和selectedindexchanged事件的機制有關嗎?將selectedindexchanged事件里面的數據查詢和加載圖像單獨創建線程處理,也沒什么效果。用戶圖像是存在本地的,不用下載緩存,我進行了嘗試,發現耗費的時間主要是在查詢當前選中用戶的圖像路徑上,這塊暫時不準備進行修改,數據多了,當然耗費時間。其實真正加載圖像并不耗時。現在主要的問題是,觸發selectedindexchanged事件,這個時候,Listview會進行重繪,大概流程是:清空之前選中行的選中背景色,將其繪制成未選中的,把將要選中的行背景色改為選中行背景色。當我查詢數據多,耗時的時候,感覺這個流程卡住了一樣,之前選中的行背景色和數據都清空了,后面將要選中的行數據清空了,顏色也沒繪制。直到我查詢完畢。給人的感覺就是: selectedindexchanged事件觸發-->之前選中行背景色清空;數據查詢及圖像加載-->界面重繪暫停(若干秒,兩行的背景色和數據都清空了,影響用戶體驗,就是這個問題);selectedindexchanged事件結束-->重繪,然后完成。我不太清楚為什么selectedindexchanged事件會和Listview的重繪關聯了,我試圖將數據查詢及圖像加載這一塊用線程單獨執行,然并卵。
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

這可能是因為加載圖像的過程是UI線程同步的,由于圖像下載太慢,造成下載期間界面無法刷新。

碰到這種問題,耐心是很重要的。

1、用戶圖像有多大?

2、下載用了多少時間?

3、能否本地緩存?

4、SelectedIndexChanged 事件太頻繁也會造成一個問題,參考一下React 編程模式中的一個解決方案可以有效減少無效查詢。

5、看一下是否重寫的ListView控件有改良的空間。


查看完整回答
反對 回復 2018-09-09
  • 1 回答
  • 0 關注
  • 818 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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