diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index 13d5f03..f743f7a 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -179,4 +179,4 @@
     public void onCallsFetched(Cursor statusCursor) {
         // Do nothing. Implemented to satisfy CallLogQueryHandler.Listener.
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index d70a40d..16be308 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -89,6 +89,11 @@
         public void fetchCalls();
     }
 
+    /** Implements onClickListener for the report button. */
+    public interface OnReportButtonClickListener {
+        public void onReportButtonClick(String number);
+    }
+
     /**
      * Stores a phone number of a call with the country code where it originally occurred.
      * <p>
@@ -133,6 +138,7 @@
     private final ContactInfoHelper mContactInfoHelper;
     private final CallFetcher mCallFetcher;
     private final Toast mReportedToast;
+    private final OnReportButtonClickListener mOnReportButtonClickListener;
     private ViewTreeObserver mViewTreeObserver = null;
 
     /**
@@ -344,7 +350,7 @@
 
     public CallLogAdapter(Context context, CallFetcher callFetcher,
             ContactInfoHelper contactInfoHelper, CallItemExpandedListener callItemExpandedListener,
-            boolean isCallLog) {
+            OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
         super(context);
 
         mContext = context;
@@ -353,6 +359,7 @@
         mIsCallLog = isCallLog;
         mCallItemExpandedListener = callItemExpandedListener;
 
+        mOnReportButtonClickListener = onReportButtonClickListener;
         mReportedToast = Toast.makeText(mContext, R.string.toast_caller_id_reported,
                 Toast.LENGTH_SHORT);
 
@@ -697,10 +704,6 @@
             // when the user expands the actions ViewStub.
         }
 
-        // Restore expansion state of the row on rebind.  Inflate the actions ViewStub if required,
-        // and set its visibility state accordingly.
-        expandOrCollapseActions(callLogItemView, isExpanded(rowId));
-
         // Lookup contacts with this number
         NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
         ExpirableCache.CachedValue<ContactInfo> cachedInfo =
@@ -759,6 +762,10 @@
         views.reported = info.isBadData;
         views.isExternal = mContactInfoHelper.isExternal(info.sourceType);
 
+        // Restore expansion state of the row on rebind.  Inflate the actions ViewStub if required,
+        // and set its visibility state accordingly.
+        expandOrCollapseActions(callLogItemView, isExpanded(rowId));
+
         if (TextUtils.isEmpty(name)) {
             details = new PhoneCallDetails(number, numberPresentation,
                     formattedNumber, countryIso, geocode, callTypes, date,
@@ -949,10 +956,9 @@
             views.reportButtonView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    mReportedToast.show();
-                    ((CallLogListItemViews) callLogItem.getTag()).reported = true;
-                    v.setVisibility(View.GONE);
-                    // TODO: Set the entry as reported in the database.
+                    if (mOnReportButtonClickListener != null) {
+                        mOnReportButtonClickListener.onReportButtonClick(views.number);
+                    }
                 }
             });
         }
@@ -1014,6 +1020,8 @@
 
             if (views.isExternal && !views.reported) {
                 views.reportButtonView.setVisibility(View.VISIBLE);
+            } else {
+                views.reportButtonView.setVisibility(View.GONE);
             }
         }
 
@@ -1413,4 +1421,9 @@
            return mContext.getResources().getString(R.string.call_log_header_other);
        }
     }
+
+    public void onBadDataReported(String number) {
+        mContactInfoCache.expireAll();
+        mReportedToast.show();
+    }
 }
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 1668895..8523705 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -20,6 +20,7 @@
 import android.animation.ValueAnimator;
 import android.animation.Animator.AnimatorListener;
 import android.app.Activity;
+import android.app.DialogFragment;
 import android.app.KeyguardManager;
 import android.app.ListFragment;
 import android.content.Context;
@@ -65,7 +66,7 @@
  * (all, missed or voicemails), specify it in the constructor.
  */
 public class CallLogFragment extends ListFragment
-        implements CallLogQueryHandler.Listener,
+        implements CallLogQueryHandler.Listener, CallLogAdapter.OnReportButtonClickListener,
         CallLogAdapter.CallFetcher,
         CallLogAdapter.CallItemExpandedListener {
     private static final String TAG = "CallLogFragment";
@@ -178,7 +179,6 @@
     @Override
     public void onCreate(Bundle state) {
         super.onCreate(state);
-
         if (state != null) {
             mCallTypeFilter = state.getInt(KEY_FILTER_TYPE, mCallTypeFilter);
             mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit);
@@ -187,8 +187,8 @@
         }
 
         String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
-        mAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this, new ContactInfoHelper(
-                getActivity(), currentCountryIso), this, true);
+        mAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
+                new ContactInfoHelper(getActivity(), currentCountryIso), this, this, true);
         setListAdapter(mAdapter);
         mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
                 this, mLogLimit);
@@ -666,4 +666,17 @@
 
         return null;
     }
+
+    public void onBadDataReported(String number) {
+        mAdapter.onBadDataReported(number);
+        mAdapter.notifyDataSetChanged();
+    }
+
+    public void onReportButtonClick(String number) {
+        DialogFragment df = ObjectFactory.getReportDialogFragment(number);
+        if (df != null) {
+            df.setTargetFragment(this, 0);
+            df.show(getActivity().getFragmentManager(), "report_dialog");
+        }
+    }
 }
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index e94555e..103eef7 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -220,7 +220,7 @@
                 this, 1);
         final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
         mCallLogAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
-                new ContactInfoHelper(getActivity(), currentCountryIso), null, false);
+                new ContactInfoHelper(getActivity(), currentCountryIso), null, null, false);
 
         mMergedAdapter = new ShortcutCardsAdapter(getActivity(), this, mCallLogAdapter);
     }
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 9786311..54a5821 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -18,10 +18,12 @@
 
 import static com.android.dialer.calllog.CallLogAdapter.CallFetcher;
 
+import android.app.DialogFragment;
 import android.content.Context;
 
 import com.android.dialer.calllog.CallLogAdapter;
 import com.android.dialer.calllog.CallLogAdapter.CallItemExpandedListener;
+import com.android.dialer.calllog.CallLogAdapter.OnReportButtonClickListener;
 import com.android.dialer.calllog.ContactInfoHelper;
 import com.android.dialer.service.CachedNumberLookupService;
 
@@ -43,10 +45,15 @@
      * @param isCallLog Is this call log adapter being used on the call log?
      * @return Instance of CallLogAdapter.
      */
-    public static CallLogAdapter newCallLogAdapter(Context context, CallFetcher callFetcher,
-            ContactInfoHelper contactInfoHelper, CallItemExpandedListener callItemExpandedListener,
-            boolean isCallLog) {
-        return new CallLogAdapter(context, callFetcher, contactInfoHelper, callItemExpandedListener,
-                isCallLog);
+    public static CallLogAdapter newCallLogAdapter(Context context,
+            CallFetcher callFetcher, ContactInfoHelper contactInfoHelper,
+            CallItemExpandedListener callItemExpandedListener,
+            OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
+        return new CallLogAdapter(context, callFetcher, contactInfoHelper,
+                callItemExpandedListener, onReportButtonClickListener, isCallLog);
+    }
+
+    public static DialogFragment getReportDialogFragment(String number) {
+        return null;
     }
 }
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index f3679d4..b7f06d3 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -212,7 +212,7 @@
 
         public TestCallLogAdapter(Context context, CallFetcher callFetcher,
                 ContactInfoHelper contactInfoHelper) {
-            super(context, callFetcher, contactInfoHelper, null, false);
+            super(context, callFetcher, contactInfoHelper, null, null, false);
         }
 
         @Override
