Android开发之ListView实现Item局部刷新

2019-12-10 19:58:37王冬梅
  • public void setDates(List<AppContent> mDates) {  this.mDates = mDates; 
  • }  @Override 
  • public View getView(int position, View convertView, ViewGroup parent) {  ViewHolder holder = null; 
  • if (convertView == null) {  holder = new ViewHolder(); 
  • convertView = LayoutInflater.from(mContext).inflate(  R.layout.listitem_download, null); 
  • holder.statusIcon = (DownloadPercentView) convertView.findViewById(R.id.status_icon);  holder.name = (TextView) convertView.findViewById(R.id.name); 
  • holder.downloadPercent = (TextView) convertView.findViewById(R.id.download_percent);  holder.progressBar = (ProgressBar) convertView.findViewById(R.id.progressbar); 
  • convertView.setTag(holder);  } else { 
  • holder = (ViewHolder) convertView.getTag();  } 
  • setData(holder, position);  return convertView; 
  • }  /** 
  • * 设置viewHolder的数据  * @param holder 
  • * @param itemIndex  */ 
  • private void setData(ViewHolder holder, int itemIndex) {  AppContent appContent = mDates.get(itemIndex); 
  • holder.name.setText(appContent.getName());  holder.progressBar.setProgress(appContent.getDownloadPercent()); 
  • setIconByStatus(holder.statusIcon, appContent.getStatus());  if(appContent.getStatus() == AppContent.Status.PENDING) { 
  • holder.downloadPercent.setVisibility(View.INVISIBLE);  } else { 
  • holder.downloadPercent.setVisibility(View.VISIBLE);  holder.statusIcon.setProgress(appContent.getDownloadPercent()); 
  • holder.downloadPercent.setText("下载进度:" + appContent.getDownloadPercent() + "%");  } 
  • }  /** 
  • * 局部刷新  * @param view 
  • * @param itemIndex  */ 
  • public void updateView(View view, int itemIndex) {  if(view == null) { 
  • return;  } 
  • //从view中取得holder  ViewHolder holder = (ViewHolder) view.getTag();