精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android奇巧:ListView實現Item局部刷新

移動開發
但是博主在做公司項目的時候,有個下載模塊,因為可能同時下載好幾個數據,所以用的listview展示所有正在下載的內容。因為下載進度要實時更新,所以要不停的調用notifyDateSetChanged刷新數據。這樣會不停的重新繪制整個listview的界面,性能開銷非常大。

對于ListView數據的刷新大家都知道,改變Adapter的數據源,然后調用Adapter的notifyDateSetChanged()方法即可。

但是博主在做公司項目的時候,有個下載模塊,因為可能同時下載好幾個數據,所以用的listview展示所有正在下載的內容。因為下載進度要實時更新,所以要不停的調用notifyDateSetChanged刷新數據。這樣會不停的重新繪制整個listview的界面,性能開銷非常大。而且如果每個item有圖片的話,每個item的圖片都需要重新加載,就算圖片做了內存緩存,刷新一下圖片也會閃一下,不停的刷新就會導致各個item的圖片不停的閃,體驗一點都不好。

那么對于上面問題,有沒有解決辦法呢?當然是有的。我們可以針對某一個item進行局部更新,而不影響其它沒有修改的item。那么具體如何實現的呢?我們看下面的代碼。

  1. 1 private void updateView(int itemIndex) { 
  2. 2 //得到***個可顯示控件的位置, 
  3. 3 int visiblePosition = mListView.getFirstVisiblePosition(); 
  4. 4 //只有當要更新的view在可見的位置時才更新,不可見時,跳過不更新 
  5. 5 if (itemIndex - visiblePosition >= 0) { 
  6. 6 //得到要更新的item的view 
  7. 7 View view = mListView.getChildAt(itemIndex - visiblePosition); 
  8. 8 //調用adapter更新界面 
  9. 9 mAdapter.updateView(view, itemIndex); 
  10. 10 } 
  11. 11 } 

這個函數主要是根據傳入的itemIndex來獲取第itemIndex的數據所顯示的view。itemIndex就是要修改的數據再List集合中的位置,比如我這里下載進度有更新,發了一個廣播這里接收到了,需要修改該下載內容的進度條,廣播接收器可以這么寫:
 

 

  1.  1 @Override 
  2. 2 public void onReceive(Context context, Intent intent) { 
  3. 3 AppContent appContent = intent.getParcelableExtra("appContent"); 
  4. 4 if(appContent == nullreturn
  5. 5 int itemIndex = 0
  6. 6 for(AppContent appContent1 : mList) { 
  7. 7 if(appContent.getUrl().equals(appContent1.getUrl())) { 
  8. 8 itemIndex = mList.indexOf(appContent1); 
  9. 9 appContent1.setDownloadPercent(appContent.getDownloadPercent()); 
  10. 10 break
  11. 11 } 
  12. 12 } 
  13. 13 updateView(itemIndex); 
  14. 14 } 
  15.  
  16. 下面看Adapter的具體代碼: 
  17.  
  18. 1 public class AppContentAdapter extends BaseAdapter{ 
  19. 2 
  20. 3 private List<AppContent> mDates = null
  21. 4 private Context mContext; 
  22. 5 
  23. 6 public AppContentAdapter(Context context) { 
  24. 7 this.mContext = context; 
  25. 8 } 
  26. 9 
  27. 10 @Override 
  28. 11 public int getCount() { 
  29. 12 return mDates.size(); 
  30. 13 } 
  31. 14 
  32. 15 @Override 
  33. 16 public Object getItem(int position) { 
  34. 17 return mDates.get(position); 
  35. 18 } 
  36. 19 
  37. 20 @Override 
  38. 21 public long getItemId(int position) { 
  39. 22 return position; 
  40. 23 } 
  41. 24 
  42. 25 public void setDates(List<AppContent> mDates) { 
  43. 26 this.mDates = mDates; 
  44. 27 } 
  45. 28 
  46. 29 @Override 
  47. 30 public View getView(int position, View convertView, ViewGroup parent) { 
  48. 31 ViewHolder holder = null
  49. 32 if (convertView == null) { 
  50. 33 holder = new ViewHolder(); 
  51. 34 convertView = LayoutInflater.from(mContext).inflate( 
  52. 35 R.layout.listitem_download, null); 
  53. 36 holder.statusIcon = (DownloadPercentView) convertView.findViewById(R.id.status_icon); 
  54. 37 holder.name = (TextView) convertView.findViewById(R.id.name); 
  55. 38 holder.downloadPercent = (TextView) convertView.findViewById(R.id.download_percent); 
  56. 39 holder.progressBar = (ProgressBar) convertView.findViewById(R.id.progressbar); 
  57. 40 convertView.setTag(holder); 
  58. 41 } else { 
  59. 42 holder = (ViewHolder) convertView.getTag(); 
  60. 43 } 
  61. 44 setData(holder, position); 
  62. 45 return convertView; 
  63. 46 } 
  64. 47 
  65. 48 /** 
  66. 49 * 設置viewHolder的數據 
  67. 50 * @param holder 
  68. 51 * @param itemIndex 
  69. 52 */ 
  70. 53 private void setData(ViewHolder holder, int itemIndex) { 
  71. 54 AppContent appContent = mDates.get(itemIndex); 
  72. 55 holder.name.setText(appContent.getName()); 
  73. 56 holder.progressBar.setProgress(appContent.getDownloadPercent()); 
  74. 57 setIconByStatus(holder.statusIcon, appContent.getStatus()); 
  75. 58 if(appContent.getStatus() == AppContent.Status.PENDING) { 
  76. 59 holder.downloadPercent.setVisibility(View.INVISIBLE); 
  77. 60 } else { 
  78. 61 holder.downloadPercent.setVisibility(View.VISIBLE); 
  79. 62 holder.statusIcon.setProgress(appContent.getDownloadPercent()); 
  80. 63 holder.downloadPercent.setText("下載進度:" + appContent.getDownloadPercent() + "%"); 
  81. 64 } 
  82. 65 } 
  83. 66 
  84. 67 
  85. 68 /** 
  86. 69 * 局部刷新 
  87. 70 * @param view 
  88. 71 * @param itemIndex 
  89. 72 */ 
  90. 73 public void updateView(View view, int itemIndex) { 
  91. 74 if(view == null) { 
  92. 75 return
  93. 76 } 
  94. 77 //從view中取得holder 
  95. 78 ViewHolder holder = (ViewHolder) view.getTag(); 
  96. 79 holder.statusIcon = (DownloadPercentView) view.findViewById(R.id.status_icon); 
  97. 80 holder.name = (TextView) view.findViewById(R.id.name); 
  98. 81 holder.downloadPercent = (TextView) view.findViewById(R.id.download_percent); 
  99. 82 holder.progressBar = (ProgressBar) view.findViewById(R.id.progressbar); 
  100. 83 setData(holder, itemIndex); 
  101. 84 } 
  102. 85 
  103. 86 /** 
  104. 87 * 根據狀態設置圖標 
  105. 88 * @param downloadPercentView 
  106. 89 * @param status 
  107. 90 */ 
  108. 91 private void setIconByStatus(DownloadPercentView downloadPercentView, AppContent.Status status) { 
  109. 92 downloadPercentView.setVisibility(View.VISIBLE); 
  110. 93 if(status == AppContent.Status.PENDING) { 
  111. 94 downloadPercentView.setStatus(DownloadPercentView.STATUS_PEDDING); 
  112. 95 } 
  113. 96 if(status == AppContent.Status.DOWNLOADING) { 
  114. 97 downloadPercentView.setStatus(DownloadPercentView.STATUS_DOWNLOADING); 
  115. 98 } 
  116. 99 if(status == AppContent.Status.WAITING) { 
  117. 100 downloadPercentView.setStatus(DownloadPercentView.STATUS_WAITING); 
  118. 101 } 
  119. 102 if(status == AppContent.Status.PAUSED) { 
  120. 103 downloadPercentView.setStatus(DownloadPercentView.STATUS_PAUSED); 
  121. 104 } 
  122. 105 if(status == AppContent.Status.FINISHED) { 
  123. 106 downloadPercentView.setStatus(DownloadPercentView.STATUS_FINISHED); 
  124. 107 } 
  125. 108 } 
  126. 109 
  127. 110 private class ViewHolder { 
  128. 111 private DownloadPercentView statusIcon; 
  129. 112 private TextView name; 
  130. 113 private TextView downloadPercent; 
  131. 114 private ProgressBar progressBar; 
  132. 115 } 
  133. 116 } 

詳細示例參考:https://github.com/liuling07/MultiTaskAndThreadDownload

責任編輯:chenqingxiang 來源: 博客園
相關推薦

2013-08-07 10:47:58

Android特效ListView

2013-08-07 10:35:02

AndroidListView拖拽

2015-03-26 13:14:53

javascriptjs callback實現調用

2014-07-16 13:08:24

ListViewItem View

2011-04-11 13:43:35

popupwindowlistviewAndroid

2013-11-05 11:25:21

Android 4.4系統詳解

2012-12-26 15:19:09

Android開發ListView

2011-05-27 15:02:15

Android ListView

2011-04-11 14:14:29

checkboxlistviewAndroid

2013-03-27 09:17:17

Android開發AndroidList

2011-06-03 10:48:23

Android ListView

2013-04-02 13:04:07

ListView平滑滾

2014-12-30 11:51:35

ListViewItem View

2014-12-17 09:46:30

AndroidListView最佳實踐

2013-07-17 16:33:02

下拉刷新listvie滾動到底部加載Android開發學習

2023-12-13 10:07:56

地圖自動駕駛

2013-07-10 10:21:22

Android Lis

2015-07-28 14:39:02

IOS技巧

2017-11-08 14:34:20

圖片fresco程序員

2010-01-12 10:48:54

VB.NET LIST
點贊
收藏

51CTO技術棧公眾號

韩国精品美女www爽爽爽视频| 一色屋精品亚洲香蕉网站| 欧美黑人狂野猛交老妇| 26uuu国产| 激情在线视频播放| kk眼镜猥琐国模调教系列一区二区| 久久久久久久网站| 亚洲黄色免费在线观看| www.日韩| 国产精品女主播av| 99国产视频在线| 国产尤物在线视频| 日韩在线看片| 日韩三级免费观看| 久久精品.com| 国产网站在线免费观看| 成人午夜激情在线| 国产成人在线一区| 精品自拍偷拍视频| 亚洲高清极品| 91精品国产综合久久蜜臀| 国产毛片久久久久久国产毛片 | 91国模大尺度私拍在线视频| 性欧美videosex高清少妇| 国产精品区在线观看| 99re国产精品| 亚洲天堂男人天堂| 精产国品一区二区三区| 欧美7777| 一区二区不卡在线播放| 日韩三级在线播放| 欧美熟女一区二区| 久久精品av麻豆的观看方式| 97久久精品视频| 亚洲欧美精品久久| 一呦二呦三呦国产精品| 精品久久99ma| 欧美成人福利在线观看| 午夜激情电影在线播放| 国产精品成人网| 久久综合一区| 免费a视频在线观看| 销魂美女一区二区三区视频在线| 久久久精品国产| 亚洲天堂久久新| 88久久精品| 91精品国产色综合久久ai换脸| av五月天在线| 欧美人与牲禽动交com| 国产精品乱码一区二区三区软件| 精品一区久久久| 国产偷人妻精品一区二区在线| 日韩精品亚洲专区| 97在线免费观看视频| 欧美成人精品欧美一级| 婷婷综合激情| 日韩精品中文字幕久久臀| 国内av免费观看| 浪潮色综合久久天堂| 午夜国产不卡在线观看视频| 久久最新免费视频| 91精彩在线视频| 久久综合九色综合欧美亚洲| 999精品在线观看| 国产精品人人妻人人爽| 美女视频一区二区| 国产精品女主播| 波多野结衣日韩| 香蕉视频成人在线观看| 欧美一区二三区| 看片网址国产福利av中文字幕| 在线精品视频在线观看高清| 久久精品中文字幕| 日本黄色激情视频| 区一区二视频| 中文字幕av一区二区三区谷原希美| 国产熟女高潮一区二区三区 | 日本欧美三级| 亚洲国产97在线精品一区| 日本一卡二卡在线| 五月天亚洲色图| 国产视频自拍一区| 亚洲高潮女人毛茸茸| 久久国产电影| 欧美成人久久久| 天天操天天操天天操天天操天天操| 国产精品久久观看| 国产亚洲精品久久| 99热99这里只有精品| 小小影院久久| 欧美日韩电影在线观看| 国产性猛交普通话对白| 国产精品久久| 欧美一区二区三区四区在线| 无码视频一区二区三区| 麻豆精品在线看| 666精品在线| 欧美一级做性受免费大片免费| 91在线播放网址| 日本10禁啪啪无遮挡免费一区二区| 成年人在线看| 自拍偷拍国产精品| 97干在线视频| 日韩三区在线| 欧美一区二区美女| 日本一卡二卡在线| 成人羞羞动漫| 久久久久久久久久久久av| 国产精品久久久久久久妇| 老司机精品福利视频| 国产精品久久综合av爱欲tv| av综合在线观看| av电影在线观看完整版一区二区| 欧美精品与人动性物交免费看| jizzjizz在线观看| 一区二区三区四区视频精品免费| 精品少妇人妻av免费久久洗澡| 日本欧美一区| 日韩欧美中文字幕精品| 扒开jk护士狂揉免费| 外国成人激情视频| 欧美有码在线观看视频| 国产又大又黄的视频| 国产成人精品亚洲日本在线桃色| 日本一区二区三区视频在线播放| 亚洲www色| 91福利资源站| a级片在线观看视频| 成人毛片免费看| 久久男人的天堂| 亚洲中文字幕在线一区| 波多野结衣一区二区三区| 人禽交欧美网站免费| 国产第一页在线| 欧美另类久久久品| 爱爱免费小视频| 欧美/亚洲一区| 国产精品久久久久久久午夜 | 日韩欧美亚洲国产精品字幕久久久| 午夜一区二区三区免费| 日韩欧美精品综合| 亚洲精品福利视频网站| 亚洲视频免费在线| www.国产在线播放| 日韩午夜电影免费看| 国产偷亚洲偷欧美偷精品| 激情五月婷婷在线| 久久99精品国产麻豆婷婷洗澡| 欧美日韩国产综合在线| 岛国毛片av在线| 欧美一区二区三区性视频| 91成年人网站| 羞羞答答国产精品www一本| 国产欧美韩国高清| 成人性生交大片免费看午夜 | 欧美精品vⅰdeose4hd| 在线免费观看成年人视频| 亚洲视频久久| 国产精品福利视频| 欧洲精品二区| 日韩精品一区二区三区中文不卡| 制服丨自拍丨欧美丨动漫丨| 麻豆久久一区二区| 99久re热视频精品98| 亚洲1区在线| 97国产一区二区精品久久呦| 香蕉国产在线视频| 91黄色在线观看| 亚洲欧洲综合网| 国产精品综合av一区二区国产馆| 日本a在线天堂| 亚洲国产欧美日韩在线观看第一区| 欧美一区二区三区免费视| www黄在线观看| 51久久夜色精品国产麻豆| 麻豆一区二区三区精品视频| 91在线免费视频观看| 免费看涩涩视频| 伊人色**天天综合婷婷| 精品久久久久久一区| 四虎4545www国产精品| 久久精品这里热有精品| 色一情一乱一区二区三区| 欧美性色aⅴ视频一区日韩精品| 日韩av片在线免费观看| 成人h动漫精品一区二| 国产日韩成人内射视频| 综合激情视频| 欧美一级二级三级| 久久九九精品视频| 日本欧美一级片| 在线观看午夜av| 亚洲欧美日韩另类| 国产福利资源在线| 色婷婷av一区二区三区之一色屋| 久久久久久久久久97| 99国内精品久久| 青青草精品在线| 日本伊人午夜精品| www.日本少妇| 999久久久精品国产| 精品一区二区三区日本| 99国内精品久久久久| 18久久久久久| av大全在线| 这里只有视频精品| 色屁屁草草影院ccyycom| 欧美精品1区2区| 欧美男人亚洲天堂| 午夜欧美大尺度福利影院在线看| 99热99这里只有精品| 久久久久久久久蜜桃| 久久精品无码专区| 极品少妇xxxx偷拍精品少妇| 18禁男女爽爽爽午夜网站免费| 欧美激情视频一区二区三区免费| 欧美1o一11sex性hdhd| av不卡一区| 亚洲a区在线视频| 国产精品麻豆成人av电影艾秋| 91成人免费观看网站| 欧美黑人猛交| 久久影视电视剧免费网站清宫辞电视 | 欧美乱妇15p| 人人妻人人爽人人澡人人精品| 午夜av一区二区三区| 久久久久久久久久久久国产| 亚洲视频免费观看| 国产中文字幕久久| 国产精品免费视频观看| 成年人网站免费在线观看 | 国产伦精品一区二区三区四区免费| 视频欧美精品| 国产精品丝袜视频| 超碰这里只有精品| 国产精品无码专区在线观看| 免费观看成人性生生活片| 欧美亚洲第一区| 久草免费在线视频| 97久久久免费福利网址| av中文在线资源库| **欧美日韩vr在线| 中文在线аv在线| 日本成人在线视频网址| 欧美gay视频| 国产精品va在线播放| 成人mm视频在线观看| 国产精品视频免费在线观看| 岛国一区二区| 成人免费在线视频网址| 在线视频成人| 亚洲va欧美va国产综合剧情| 免费观看亚洲视频大全| 亚洲自拍小视频| 婷婷综合国产| 国内一区在线| 中文字幕精品影院| 亚洲精品中文字幕在线| 99久久视频| www.国产在线播放| 亚洲一区二区免费看| 成人精品小视频| 久久精品国产亚洲一区二区三区| 日韩av自拍偷拍| 国产成人自拍高清视频在线免费播放| 在线看黄色的网站| 久久人人97超碰com| 娇妻被老王脔到高潮失禁视频| 中文字幕亚洲欧美在线不卡| 青娱乐免费在线视频| 精品动漫一区二区| 自拍偷拍18p| 欧美一区日本一区韩国一区| 亚洲女同志亚洲女同女播放| 日韩精品高清在线| 最新av网站在线观看| 欧美老女人xx| 天堂中文av在线资源库| 国产女同一区二区| 国产suv精品一区二区四区视频| 欧美人xxxxx| 欧美在线三区| 国产一级不卡毛片| 国产成人免费视频网站| 精品久久久久久中文字幕人妻最新| 国产精品美女久久久久久久| 欧美日韩三级在线观看| 色综合久久天天| 国产绿帽一区二区三区| 日韩精品中文字幕视频在线| 欧美69xxx| 欧美一级视频一区二区| 99视频这里有精品| 久久久久高清| 你懂的国产精品永久在线| 99色精品视频| 国产精品99久久久久久似苏梦涵 | 97人人模人人爽人人喊中文字| 日本欧美韩国| 国产在线精品二区| 一本到12不卡视频在线dvd| 成人在线免费观看av| 国产麻豆视频一区| 成人激情五月天| 亚洲国产一区二区a毛片| 又骚又黄的视频| 日韩经典第一页| 后进极品白嫩翘臀在线播放| 国产精品日韩精品| 自拍自偷一区二区三区| 今天免费高清在线观看国语| 日本视频在线一区| 欧美无人区码suv| 一区二区在线免费观看| 在线视频欧美亚洲| 亚洲视频在线观看| 黄色在线免费观看网站| 99精品在线直播| 婷婷久久国产对白刺激五月99| 日本www.色| 久久免费美女视频| 国产精品999在线观看| 日韩欧美国产小视频| 国产成人午夜| 国产日产欧美a一级在线| 精品成人影院| 男女曰b免费视频| 91在线观看视频| 在线观看免费av片| 日韩高清免费在线| a级片在线免费观看| 国产不卡一区二区在线观看| 欧美黄在线观看| 中文字幕55页| 亚洲九九爱视频| 99精品免费观看| 久热在线中文字幕色999舞| 在线欧美激情| 蜜臀在线免费观看| 国产一区二区三区蝌蚪| 永久久久久久久| 日韩一级免费观看| free性欧美hd另类精品| 亚洲a级在线观看| 欧美日本一区二区视频在线观看| 毛片毛片毛片毛片毛| 一区二区在线观看不卡| 国产激情视频在线播放| 欧美精品aaa| 麻豆视频一区| 97视频在线免费播放| 久久久久久久久久久久久久久99| 色老头一区二区| 最近免费中文字幕视频2019| 婷婷精品久久久久久久久久不卡| 亚洲午夜精品久久久中文影院av| 精品亚洲成a人| 91porn在线视频| 亚洲第一福利在线观看| 自拍偷拍亚洲视频| 午夜午夜精品一区二区三区文| 美女网站色91| 国产波霸爆乳一区二区| 精品成人私密视频| 毛片免费看不卡网站| 亚洲v国产v在线观看| 精品在线免费观看| 精品小视频在线观看| 日韩精品亚洲精品| 97人人做人人爽香蕉精品| 青青草原国产免费| 成人在线视频一区二区| 精品国产xxx| 久久艳片www.17c.com | 吞精囗交69激情欧美| 亚洲国产欧美日韩| 国产高清视频一区| caoporn国产| 久久精品亚洲一区| 日韩啪啪网站| 岛国av免费在线| 精品成人av一区| 黄视频网站在线看| 精品一区二区三区日本| 免费成人美女在线观看| 精品无码人妻一区二区三区| 亚洲亚裔videos黑人hd| 秋霞一区二区三区| 少妇高清精品毛片在线视频| **欧美大码日韩| 日韩精品系列| 亚洲一区国产精品| 香蕉国产精品偷在线观看不卡| 青青操在线视频观看| 精品亚洲一区二区三区四区五区 | 国产女人水真多18毛片18精品| 日韩国产在线观看| 国产午夜视频在线播放| 日韩中文字幕在线免费观看| 亚州综合一区|