@Override public View getView(int position, View convertView, ViewGroup parent) { Log.d(TAG, "getView"); final User currUser = getUser(position); UserViewHolder holder; if (convertView == null) { Log.d(TAG, "getView: inflate view"); convertView = mInflater.inflate(R.layout.user_item, null); holder = new UserViewHolder(); holder.imgUserItem = (ImageView) convertView.findViewById(R.id.imgUserItem); holder.txtUserItemName = (TextView) convertView.findViewById(R.id.txtUserItemName); holder.txtUserItemLocation = (TextView) convertView.findViewById(R.id.txtUserItemLocation); holder.txtUserItemJoined = (TextView) convertView.findViewById(R.id.txtUserItemJoined); convertView.setTag(holder); } else { Log.d(TAG, "getView: reuse view"); holder = (UserViewHolder) convertView.getTag(); } holder.txtUserItemName.setText(currUser.getName()); holder.txtUserItemLocation.setText(currUser.getLocation()); holder.txtUserItemJoined.setText(currUser.getJoinedString()); if (currUser.isPictureLoaded()) { holder.imgUserItem.setImageBitmap(currUser.getPicture()); } else { BitmapDownloadTask task = mHolderMap.get(holder); if (task != null && task.getStatus() != AsyncTask.Status.FINISHED) { Log.d(TAG, "cancel async task"); task.cancel(false); } Log.d(TAG, "create async task"); mHolderMap.put( holder, (BitmapDownloadTask) new BitmapDownloadTask(holder, currUser, mActivity).execute()); } convertView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent userActivityIntent = new Intent(mActivity, UserActivity.class); userActivityIntent.putExtras(UserActivity.getStartExtras(currUser)); Log.d(TAG, "convertView onClick: start UserActivity"); mActivity.startActivity(userActivityIntent); } }); return convertView; }
public void cancelAllTasks() { Log.d(TAG, "cancelAllTasks"); for (BitmapDownloadTask task : mHolderMap.values()) { if (task.getStatus() != AsyncTask.Status.FINISHED) { task.cancel(false); } } }