summaryrefslogtreecommitdiffstats
path: root/src/com/android/dialer/list/SpeedDialFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/list/SpeedDialFragment.java')
-rw-r--r--src/com/android/dialer/list/SpeedDialFragment.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java
index c02c3d7f9..03613d017 100644
--- a/src/com/android/dialer/list/SpeedDialFragment.java
+++ b/src/com/android/dialer/list/SpeedDialFragment.java
@@ -240,14 +240,16 @@ public class SpeedDialFragment extends AnalyticsFragment implements OnItemClickL
/* package */ void setEmptyViewVisibility(final boolean visible) {
final int previousVisibility = mEmptyView.getVisibility();
- final int newVisibility = visible ? View.VISIBLE : View.GONE;
+ final int emptyViewVisibility = visible ? View.VISIBLE : View.GONE;
+ final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
- if (previousVisibility != newVisibility) {
+ if (previousVisibility != emptyViewVisibility) {
final RelativeLayout.LayoutParams params = (LayoutParams) mContactTileFrame
.getLayoutParams();
params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
mContactTileFrame.setLayoutParams(params);
- mEmptyView.setVisibility(newVisibility);
+ mEmptyView.setVisibility(emptyViewVisibility);
+ mListView.setVisibility(listViewVisibility);
}
}
@@ -315,6 +317,12 @@ public class SpeedDialFragment extends AnalyticsFragment implements OnItemClickL
for (int i = 0; i < mListView.getChildCount(); i++) {
final View child = mListView.getChildAt(i);
final int position = firstVisiblePosition + i;
+ // Since we are getting the position from mListView and then querying
+ // mContactTileAdapter, its very possible that things are out of sync
+ // and we might index out of bounds. Let's make sure that this doesn't happen.
+ if (!mContactTileAdapter.isIndexInBound(position)) {
+ continue;
+ }
final long itemId = mContactTileAdapter.getItemId(position);
if (DEBUG) {
Log.d(TAG, "Saving itemId: " + itemId + " for listview child " + i + " Top: "
@@ -323,7 +331,6 @@ public class SpeedDialFragment extends AnalyticsFragment implements OnItemClickL
mItemIdTopMap.put(itemId, child.getTop());
mItemIdLeftMap.put(itemId, child.getLeft());
}
-
mItemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
}
@@ -351,6 +358,13 @@ public class SpeedDialFragment extends AnalyticsFragment implements OnItemClickL
final View child = mListView.getChildAt(i);
int position = firstVisiblePosition + i;
+ // Since we are getting the position from mListView and then querying
+ // mContactTileAdapter, its very possible that things are out of sync
+ // and we might index out of bounds. Let's make sure that this doesn't happen.
+ if (!mContactTileAdapter.isIndexInBound(position)) {
+ continue;
+ }
+
final long itemId = mContactTileAdapter.getItemId(position);
if (containsId(idsInPlace, itemId)) {