summaryrefslogtreecommitdiff
path: root/java/com/android/contacts/common/list/ContactEntryListFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/contacts/common/list/ContactEntryListFragment.java')
-rw-r--r--java/com/android/contacts/common/list/ContactEntryListFragment.java74
1 files changed, 36 insertions, 38 deletions
diff --git a/java/com/android/contacts/common/list/ContactEntryListFragment.java b/java/com/android/contacts/common/list/ContactEntryListFragment.java
index a8d9b55ba..278175c0b 100644
--- a/java/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/java/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -16,7 +16,6 @@
package com.android.contacts.common.list;
-import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
@@ -29,8 +28,8 @@ import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.provider.ContactsContract.Directory;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -42,12 +41,13 @@ import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import com.android.common.widget.CompositeCursorAdapter.Partition;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.ContactListViewUtils;
+import com.android.dialer.common.LogUtil;
+import java.lang.ref.WeakReference;
import java.util.Locale;
/** Common base class for various contact-related list fragments. */
@@ -56,9 +56,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
OnScrollListener,
OnFocusChangeListener,
OnTouchListener,
- OnItemLongClickListener,
LoaderCallbacks<Cursor> {
- private static final String TAG = "ContactEntryListFragment";
private static final String KEY_LIST_STATE = "liststate";
private static final String KEY_SECTION_HEADER_DISPLAY_ENABLED = "sectionHeaderDisplayEnabled";
private static final String KEY_PHOTO_LOADER_ENABLED = "photoLoaderEnabled";
@@ -130,15 +128,27 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
private LoaderManager mLoaderManager;
- private Handler mDelayedDirectorySearchHandler =
- new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == DIRECTORY_SEARCH_MESSAGE) {
- loadDirectoryPartition(msg.arg1, (DirectoryPartition) msg.obj);
- }
- }
- };
+ private Handler mDelayedDirectorySearchHandler;
+
+ private static class DelayedDirectorySearchHandler extends Handler {
+ private final WeakReference<ContactEntryListFragment<?>> contactEntryListFragmentRef;
+
+ private DelayedDirectorySearchHandler(ContactEntryListFragment<?> contactEntryListFragment) {
+ this.contactEntryListFragmentRef = new WeakReference<>(contactEntryListFragment);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ ContactEntryListFragment<?> contactEntryListFragment = contactEntryListFragmentRef.get();
+ if (contactEntryListFragment == null) {
+ return;
+ }
+ if (msg.what == DIRECTORY_SEARCH_MESSAGE) {
+ contactEntryListFragment.loadDirectoryPartition(msg.arg1, (DirectoryPartition) msg.obj);
+ }
+ }
+ }
+
private ContactsPreferences.ChangeListener mPreferencesChangeListener =
new ContactsPreferences.ChangeListener() {
@Override
@@ -148,6 +158,10 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
};
+ protected ContactEntryListFragment() {
+ mDelayedDirectorySearchHandler = new DelayedDirectorySearchHandler(this);
+ }
+
protected abstract View inflateView(LayoutInflater inflater, ViewGroup container);
protected abstract T createListAdapter();
@@ -158,18 +172,10 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
*/
protected abstract void onItemClick(int position, long id);
- /**
- * @param position Please note that the position is already adjusted for header views, so "0"
- * means the first list item below header views.
- */
- protected boolean onItemLongClick(int position, long id) {
- return false;
- }
-
@Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- setContext(activity);
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ setContext(context);
setLoaderManager(super.getLoaderManager());
}
@@ -343,7 +349,9 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
} catch (RuntimeException e) {
// We don't even know what the projection should be, so no point trying to
// return an empty MatrixCursor with the correct projection here.
- Log.w(TAG, "RuntimeException while trying to query ContactsProvider.");
+ LogUtil.w(
+ "ContactEntryListFragment.onLoadInBackground",
+ "RuntimeException while trying to query ContactsProvider.");
return null;
}
}
@@ -441,6 +449,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
public boolean isLoading() {
+ //noinspection SimplifiableIfStatement
if (mAdapter != null && mAdapter.isLoading()) {
return true;
}
@@ -511,7 +520,6 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
if (mListView != null) {
mListView.setFastScrollEnabled(hasScrollbar);
- mListView.setFastScrollAlwaysVisible(hasScrollbar);
mListView.setVerticalScrollbarPosition(mVerticalScrollbarPosition);
mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
}
@@ -573,6 +581,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
}
+ @Nullable
public final String getQueryString() {
return mQueryString;
}
@@ -694,7 +703,6 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
mListView.setOnItemClickListener(this);
- mListView.setOnItemLongClickListener(this);
mListView.setOnFocusChangeListener(this);
mListView.setOnTouchListener(this);
mListView.setFastScrollEnabled(!isSearchMode());
@@ -779,16 +787,6 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
}
- @Override
- public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
- int adjPosition = position - mListView.getHeaderViewsCount();
-
- if (adjPosition >= 0) {
- return onItemLongClick(adjPosition, id);
- }
- return false;
- }
-
private void hideSoftKeyboard() {
// Hide soft keyboard, if visible
InputMethodManager inputMethodManager =