精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品色在线观看| 911久久香蕉国产线看观看| 欧美性xxxxxxxxx| 免费在线成人av电影| 波多野结衣一区二区在线| 久久国产亚洲| 亚洲电影第1页| 天天干天天爽天天射| 日本三级在线观看网站| 久久久久久久久久久久久夜| 国产日韩综合一区二区性色av| 久久精品视频免费在线观看| 亚洲免费福利一区| 91精品国产综合久久小美女| 久久国产成人精品国产成人亚洲| 蜜桃视频网站在线观看| 91蜜桃传媒精品久久久一区二区| 国产综合福利在线| 国产剧情在线视频| 欧美在线看片| 日韩中文字幕在线免费观看| 三级电影在线看| 玖玖玖视频精品| 欧美在线小视频| 精品久久一二三| 黄色在线免费网站| 中文av一区二区| 久久96国产精品久久99软件| 国产不卡精品视频| 免费在线观看成人| 欧美一级淫片丝袜脚交| 欧美日韩在线国产| 水蜜桃久久夜色精品一区| 亚洲精品视频二区| 国产婷婷在线观看| 亚洲综合网狠久久| 日韩色在线观看| 久久久久xxxx| 国内欧美日韩| 欧美在线看片a免费观看| 夫妻免费无码v看片| 国产三线在线| 亚洲高清免费观看| 青青视频免费在线| v片在线观看| 亚洲人成亚洲人成在线观看图片 | 男人添女人下部高潮视频在观看| 成人直播在线| 亚洲视频一二三区| 免费看av软件| 黄色网在线免费观看| 国产精品二区一区二区aⅴ污介绍| 日韩中文字幕一区二区| 日韩精品一区二区三区在线播放| 久久综合在线观看| 精品国产一区二区三区2021| 91精品久久久久久久91蜜桃 | caoporn国产精品| 国产欧美日韩伦理| 少妇人妻精品一区二区三区| 成人黄色综合网站| 久久精品丝袜高跟鞋| 四虎在线免费看| 久久久国际精品| 日韩一区二区三区资源| 99re在线视频| 综合久久国产九一剧情麻豆| 黄色一级视频播放| xxxx在线视频| 色综合天天综合网国产成人综合天 | 亚洲 欧美 日韩在线| 欧美18xxxx| 亚洲欧美中文日韩在线v日本| 久久午夜精品视频| 亚洲视频电影在线| 久久露脸国产精品| 潘金莲一级淫片aaaaaa播放| 麻豆国产精品视频| 99久久自偷自偷国产精品不卡| 成人免费视频国产| 2024国产精品| 一区在线电影| 欧美激情成人动漫| 色先锋资源久久综合| 色婷婷综合网站| 一区二区三区自拍视频| 亚洲毛片在线看| 2014亚洲天堂| 免费在线亚洲| 欧洲精品毛片网站| 夜夜躁很很躁日日躁麻豆| 国产成人高清视频| 欧美精品在线一区| 在线网址91| 在线免费亚洲电影| 亚洲一区二区三区三州| 亚洲欧洲免费| 色综合导航网站| av首页在线观看| 国产成人午夜电影网| 日本福利一区二区三区| 伊人222成人综合网| 日本福利一区二区| 国产亚洲精品成人a| 欧洲激情综合| 456亚洲影院| 成人av一区二区三区在线观看| 久久久久久免费毛片精品| 在线观看成人免费| 亚洲电影有码| 亚洲高清久久久久久| 美女视频久久久| 亚洲女同在线| 国产99在线免费| 日本电影全部在线观看网站视频| 精品国产乱码久久久久久天美 | 美女福利精品视频| 亚洲婷婷综合网| 成人黄色在线视频| 天天在线免费视频| 成人在线黄色| 亚洲精品有码在线| 日韩乱码一区二区| 成人手机电影网| 中文精品一区二区三区| 日韩欧美一区二区三区在线观看| 亚洲国产精品成人av| 538精品在线视频| 免费不卡在线观看| 欧美性大战久久久久| 2020国产在线| 精品国产一区二区三区久久久蜜月| 天堂网中文在线观看| 丝袜诱惑制服诱惑色一区在线观看| 成人自拍偷拍| 亚洲性图自拍| 69堂亚洲精品首页| 国产精品一区二区亚洲| 老司机久久99久久精品播放免费| 国产精品一区二区你懂得| 成人黄视频在线观看| 精品视频999| 五月激情四射婷婷| 日本不卡在线视频| 日韩欧美精品在线不卡 | 成人精品久久久| 91社区在线| 欧美色综合网站| 国产成人免费观看网站| 日韩经典中文字幕一区| 日韩久久在线| 成人国产综合| 日韩一区二区三区国产| 亚洲天堂avav| 中文字幕日韩av资源站| 国产高清999| 中文字幕一区二区三区欧美日韩| 91夜夜未满十八勿入爽爽影院| 网友自拍视频在线| 欧美一区欧美二区| 久草综合在线视频| 床上的激情91.| 777精品久无码人妻蜜桃| 日韩美女毛片| 日韩美女视频免费看| 日韩子在线观看| 欧美一级二级三级乱码| 国产成年人免费视频| 91啦中文在线观看| 婷婷六月天在线| 91免费精品| 国产99在线免费| 国产精品av一区二区三区| 中文精品99久久国产香蕉| 91久久久久国产一区二区| 亚洲精品老司机| 99久久国产精| 久久精品国产亚洲高清剧情介绍| 国产又粗又大又爽的视频| 999久久精品| 欧美在线视频播放| 毛片av在线| 亚洲国产精彩中文乱码av| 日本中文字幕第一页| 国产精品毛片高清在线完整版| 日本少妇一区二区三区| 99日韩精品| 亚洲国产精品久久久久久女王| 91精品福利观看| 992tv成人免费影院| 在线免费观看黄色av| 日韩精品专区在线影院观看| 日韩视频在线观看一区| 国产精品白丝在线| 欧美在线一级片| 精品亚洲aⅴ乱码一区二区三区| 中国丰满熟妇xxxx性| 精品日韩免费| 国产精品免费一区二区三区观看| 春暖花开亚洲一区二区三区| 欧美精品一区在线播放| 国模精品一区二区| 精品久久久久久最新网址| 日韩熟女一区二区| 午夜激情综合网| 日韩精品久久久久久久的张开腿让| 成人精品亚洲人成在线| 校园春色 亚洲色图| 精品91视频| 综合视频免费看| 久久av免费看| 国产精品国色综合久久| 婷婷精品久久久久久久久久不卡| 668精品在线视频| 中文字幕在线观看播放| 中日韩午夜理伦电影免费| 亚洲欧美综合一区二区| 日韩片之四级片| 亚洲网站免费观看| 在线视频一区二区免费| 奇米影视第四色777| 亚洲精品久久久久久国产精华液| 天天舔天天操天天干| 91视频免费播放| 亚洲欧美日韩色| 国产精品亚洲人在线观看| 小明看看成人免费视频| 日韩不卡免费视频| 日本wwww视频| 最新国产拍偷乱拍精品| 国产欧美123| 婷婷精品进入| 亚洲精品高清国产一线久久| 欧美禁忌电影| 欧美一区二区三区四区在线观看地址 | 91日韩中文字幕| 中文字幕一区二区三区视频| 亚洲精品视频网址| 久久精品在这里| 精品人妻互换一区二区三区| 91亚洲永久精品| 亚洲少妇18p| 波多野洁衣一区| wwwxx日本| 99久久久无码国产精品| 年下总裁被打光屁股sp| 国产高清在线精品| wwwww在线观看| 成人免费福利片| 奇米777第四色| 成人av在线资源| 亚洲调教欧美在线| 91久色porny| 亚洲av无码一区二区三区人 | 青椒成人免费视频| 日日摸天天爽天天爽视频| 久久一区亚洲| 天天色综合天天色| 另类的小说在线视频另类成人小视频在线| 亚洲三级视频网站| 久久99九九99精品| 亚洲热在线视频| 成人精品一区二区三区中文字幕| 亚洲精品乱码久久久久久久| 久久久噜噜噜久噜久久综合| 天堂资源在线视频| 亚洲日本在线天堂| 国产精品99精品无码视| 欧美日韩中文字幕| 中国女人真人一级毛片| 91精品国产一区二区三区香蕉| 成人1区2区3区| 日韩av一区二区在线观看| 美女欧美视频在线观看免费 | 日韩啊v在线| 久久高清免费| 日本一级黄视频| 午夜亚洲性色视频| 亚洲精品综合在线观看| av资源网一区| youjizz亚洲女人| 亚洲黄色小说网站| 久久久久久久久久久久久av| 91成人看片片| 精品国产av 无码一区二区三区| 精品国产乱码久久久久久影片| 日产精品久久久久久久性色| www.欧美精品一二三区| 大桥未久在线播放| 国产精品久久中文| 中文无码日韩欧| 日本不卡二区| 精品二区久久| 日韩中文字幕a| www.日本不卡| 精品伦精品一区二区三区视频密桃| 一区二区欧美精品| 最近中文字幕在线观看视频| 日韩精品一区二区三区在线播放 | 国产 日韩 欧美 精品| 亚洲欧美日韩第一区| 综合久久2019| 国产精品久久久久77777| 一区二区三区四区高清视频| 色综合久久av| 国产精品美女久久久| 自拍一级黄色片| 国产三级三级三级精品8ⅰ区| 国产一级理论片| 欧美剧情片在线观看| 日色在线视频| 欧美高清在线播放| 久久亚洲国产精品尤物| 久久久久久久久久久久久9999| 亚洲一区二区日韩| 2025韩国理伦片在线观看| 99re亚洲国产精品| 九九免费精品视频| 欧美日韩午夜在线| 黄上黄在线观看| 国语自产精品视频在线看| 欧美高清一级片| 一区二区在线高清视频| 日韩va欧美va亚洲va久久| 日韩aaaaa| 亚洲观看高清完整版在线观看| 国产日韩精品suv| 神马国产精品影院av| 美女18一级毛片一品久道久久综合| 国产专区一区二区| 极品少妇一区二区三区| 国偷自产av一区二区三区麻豆| 中文字幕欧美一| 国产精品一二三四五区| 日韩在线视频免费观看高清中文| 日本少妇一区| 欧美精品一区二区视频| 久久国产直播| 欧美黄色激情视频| 色先锋资源久久综合| 黄色av网站在线免费观看| 国产91精品青草社区| 日韩aaa久久蜜桃av| 国产96在线 | 亚洲| 波多野结衣亚洲一区| 国产精品7777777| 亚洲国产高潮在线观看| 免费h在线看| 久久青青草综合| 久久综合九色综合欧美狠狠| 波多野结衣 在线| 一本大道久久a久久精二百| 可以直接在线观看的av| 国产成人精品网站| 欧美一二区在线观看| 日本肉体xxxx裸体xxx免费| 亚洲欧洲性图库| av网站免费大全| 欧美精品videossex88| 青青草原在线亚洲| 777米奇影视第四色| 国产精品视频一区二区三区不卡| 成人黄色片在线观看| 久久精品视频亚洲| 午夜日韩影院| 激情伊人五月天| 久久久久免费观看| 一女二男一黄一片| 欧美日韩爱爱视频| 国产96在线亚洲| 免费在线观看日韩视频| 欧美激情综合在线| 99免费在线视频| 国内精品小视频| 国产一区二区三区91| 成人黄色一级大片| 亚洲一区二区三区影院| 青青草在线播放| 成人在线视频网站| 亚洲精品精选| 久久日免费视频| 亚洲成人av在线| 在线看欧美视频| 神马午夜伦理影院| 91免费在线视频观看| 亚洲天堂aaa| 欧美亚洲一级片| 亚洲澳门在线| 成年人在线观看av| 51午夜精品国产| 亚洲永久av| 国产一区二区三区播放| 91麻豆精东视频| 国产欧美久久久精品免费| 欧美亚洲视频一区二区| 中文字幕免费一区二区| 99久久久久久久久久| 欧美一卡二卡三卡| 国产日韩另类视频一区| 国产黄色激情视频|