@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    final int contactTileAdapterCount = mContactTileAdapter.getCount();
    final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();

    // Obtain a View relevant for that position, and adjust its horizontal padding. Each
    // View has different implementation, so we use different way to control those padding.
    if (position < contactTileAdapterCount) { // For "tile" and "frequent" sections
      final View view = mContactTileAdapter.getView(position, convertView, parent);
      final int frequentHeaderPosition = mContactTileAdapter.getFrequentHeaderPosition();
      if (position < frequentHeaderPosition) { // "starred" contacts
        // No padding adjustment.
      } else if (position == frequentHeaderPosition) {
        view.setPadding(
            mItemPaddingLeft,
            mFrequentHeaderPaddingTop,
            mItemPaddingRight,
            view.getPaddingBottom());
      } else {
        // Views for "frequent" contacts use FrameLayout's margins instead of padding.
        final FrameLayout frameLayout = (FrameLayout) view;
        final View child = frameLayout.getChildAt(0);
        FrameLayout.LayoutParams params =
            new FrameLayout.LayoutParams(
                FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
        params.setMargins(mItemPaddingLeft, 0, mItemPaddingRight, 0);
        child.setLayoutParams(params);
      }
      return view;
    } else if (position == contactTileAdapterCount) { // For "all" section's account header
      mAccountFilterHeaderContainer.setPadding(
          mItemPaddingLeft,
          mAccountFilterHeaderContainer.getPaddingTop(),
          mItemPaddingRight,
          mAccountFilterHeaderContainer.getPaddingBottom());

      // Show a single "No Contacts" label under the "all" section account header
      // if no contacts are displayed.
      mAccountFilterHeaderContainer
          .findViewById(R.id.contact_list_all_empty)
          .setVisibility(contactEntryListAdapterCount == 0 ? View.VISIBLE : View.GONE);
      return mAccountFilterHeaderContainer;
    } else { // For "all" section
      if (mContactEntryListAdapter.isLoading()) { // "All" section is being loaded.
        mLoadingView.setPadding(
            mItemPaddingLeft,
            mLoadingView.getPaddingTop(),
            mItemPaddingRight,
            mLoadingView.getPaddingBottom());
        return mLoadingView;
      } else {
        // "-1" for mAccountFilterHeaderContainer
        final int localPosition = position - contactTileAdapterCount - 1;
        final ContactListItemView itemView =
            (ContactListItemView)
                mContactEntryListAdapter.getView(localPosition, convertView, null);
        itemView.setPadding(
            mItemPaddingLeft,
            itemView.getPaddingTop(),
            mItemPaddingRight,
            itemView.getPaddingBottom());
        itemView.setSelectionBoundsHorizontalMargin(mItemPaddingLeft, mItemPaddingRight);
        return itemView;
      }
    }
  }