Пример #1
0
  @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;
  }
Пример #2
0
 public void cancelAllTasks() {
   Log.d(TAG, "cancelAllTasks");
   for (BitmapDownloadTask task : mHolderMap.values()) {
     if (task.getStatus() != AsyncTask.Status.FINISHED) {
       task.cancel(false);
     }
   }
 }