在ListView的onScroll事件中執行異步加載數據,然后使用notifyDataSetChange()函數更新適配器,之后發現listView不能點擊了,這問題苦惱了我半天。最后在一篇博文中發現調用listView的requestFocusFromTouch()函數終于解決了這問題。?
- case?LOADAPPNEXT:??
- ????dismissDialog();??
- ????this.appLoadingList.addAll((List<AppItemList>)?msg.body);??
- ????onScrolltimes++;??
- ????runOnUiThread(new?Runnable()?{??
- ???????public?void?run()?{??
- ????adapter.notifyDataSetChanged();?????????????listView.requestFocusFromTouch();??
- ???????}??
- ????});??
- ????showToast(msg.extra);??
- ????break;??
問題最終得到了解決,但是原因本人不是特別清楚,說說本人的拙見,歡迎拍磚!?
android系統會對每一個運行的UI線程提供緩存機制,也就是說我們在使用諸如listView這種需要異步更新的控件時候,在notifyDataSetChange()之后,務必要記得喚醒或者說是重置你的onItemClickListener。