diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index cc3c5ba..2ba257a 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -99,6 +99,8 @@
     // Tracks the rowId of the currently expanded list item, so the position can be updated if there
     // are any changes to the call log entries, such as additions or removals.
     private long mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+    // Whether the first call log list item has been automatically expanded for a new cursor.
+    private boolean mHasBoundFirstView;
 
     /**
      *  Hashmap, keyed by call Id, used to track the day group for a call.  As call log entries are
@@ -285,6 +287,16 @@
         mCallFetcher.fetchCalls();
     }
 
+    @Override
+    public void changeCursor(Cursor cursor) {
+        // Data has changed; reset so that the first call log list item will be expanded.
+        mHasBoundFirstView = false;
+        mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+        mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+
+        super.changeCursor(cursor);
+    }
+
     public void setLoading(boolean loading) {
         mLoading = loading;
     }
@@ -489,10 +501,15 @@
 
         mCallLogViewsHelper.setPhoneCallDetails(mContext, views, details);
 
-        // Update the expanded position if the rowIds match, in case ViewHolders were added/removed.
-        // Then restore the state of the row on rebind.
         if (mCurrentlyExpandedRowId == views.rowId) {
+            // In case ViewHolders were added/removed, update the expanded position if the rowIds
+            // match so that we can restore the correct expanded state on rebind.
             mCurrentlyExpandedPosition = position;
+        } else if (!mHasBoundFirstView) {
+            // Expand the first view when loading the call log to expose the actions.
+            mCurrentlyExpandedRowId = views.rowId;
+            mCurrentlyExpandedPosition = position;
+            mHasBoundFirstView = true;
         }
         views.showActions(mCurrentlyExpandedPosition == position);
 
