// 更新指定item的数据 private void updateView(int index) { int visiblePos = listView.getFirstVisiblePosition(); int offset = index - visiblePos; // Log.e("", "index="+index+"visiblePos="+visiblePos+"offset="+offset); // 只有在可见区域才更新 if (offset < 0) return; View view = listView.getChildAt(offset); final DownloadEntry entry = downloadEntries.get(index); ViewHolder holder = (ViewHolder) view.getTag(); // Log.e("", "id="+app.id+", name="+app.name); holder.statusText.setText(entry.toString()); }
@Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null || convertView.getTag() == null) { convertView = LayoutInflater.from(ListActivity.this).inflate(R.layout.listview_item, null); holder = new ViewHolder(); holder.downloadBtn = (Button) convertView.findViewById(R.id.download_btn); holder.downloadBtn2 = (Button) convertView.findViewById(R.id.download_btn2); holder.statusText = (TextView) convertView.findViewById(R.id.show_txt); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final DownloadEntry entry = downloadEntries.get(position); holder.statusText.setText(entry.toString()); holder.downloadBtn.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { if (entry.getStatus() == DownloadStatusLevel.IDLE.value()) { DownloadManager.getInstance(ListActivity.this).add(entry); } else if (entry.getStatus() == DownloadStatusLevel.DOWNLOADING.value() || entry.getStatus() == DownloadStatusLevel.WAITING.value()) { DownloadManager.getInstance(ListActivity.this).pause(entry); } else if (entry.getStatus() == DownloadStatusLevel.PAUSE.value()) { DownloadManager.getInstance(ListActivity.this).resume(entry); } else { DownloadManager.getInstance(ListActivity.this).add(entry); } } }); holder.downloadBtn2.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ListActivity.this, DetailsActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("bean", entry); intent.putExtras(bundle); startActivity(intent); } }); return convertView; }