am 88c66dd4: Merge "Revert "Revert "Fixing issue where the prediction bar could be misplaced after installing an app.""" into ub-launcher3-burnaby

* commit '88c66dd4c584455fd9e7208f28ac7bed5b005461':
  Revert "Revert "Fixing issue where the prediction bar could be misplaced after installing an app.""
This commit is contained in:
Adam Cohen
2015-05-14 19:39:37 +00:00
committed by Android Git Automerger
2 changed files with 36 additions and 11 deletions
@@ -120,6 +120,24 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView {
mApps = apps;
}
@Override
public void setAdapter(Adapter adapter) {
// Register a change listener to update the scroll position state whenever the data set
// changes.
adapter.registerAdapterDataObserver(new AdapterDataObserver() {
@Override
public void onChanged() {
post(new Runnable() {
@Override
public void run() {
refreshCurScrollPosition();
}
});
}
});
super.setAdapter(adapter);
}
/**
* Sets the number of apps per row in this recycler view.
*/
@@ -369,13 +387,7 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView {
}
// We need to workaround the RecyclerView to get the right scroll position
List<AlphabeticalAppsList.AdapterItem> items = mApps.getAdapterItems();
getCurScrollState(mScrollPosState, items);
if (mScrollPosState.rowIndex != -1) {
int scrollY = getPaddingTop() + (mScrollPosState.rowIndex * mScrollPosState.rowHeight) +
mPredictionBarHeight - mScrollPosState.rowTopOffset;
updateScrollY(scrollY);
}
refreshCurScrollPosition();
// Scroll to the view at the position, anchored at the top of the screen. We call the scroll
// method on the LayoutManager directly since it is not exposed by RecyclerView.
@@ -464,6 +476,19 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView {
return rowCount;
}
/**
* Forces a refresh of the scroll position to any scroll listener.
*/
private void refreshCurScrollPosition() {
List<AlphabeticalAppsList.AdapterItem> items = mApps.getAdapterItems();
getCurScrollState(mScrollPosState, items);
if (mScrollPosState.rowIndex != -1) {
int scrollY = getPaddingTop() + (mScrollPosState.rowIndex * mScrollPosState.rowHeight) +
mPredictionBarHeight - mScrollPosState.rowTopOffset;
updateScrollY(scrollY);
}
}
/**
* Returns the current scroll state.
*/
@@ -83,11 +83,11 @@ public class AppsContainerView extends BaseContainerView implements DragSource,
private int mNumAppsPerRow;
private int mNumPredictedAppsPerRow;
// This coordinate is relative to this container view
private Point mBoundsCheckLastTouchDownPos = new Point(-1, -1);
private final Point mBoundsCheckLastTouchDownPos = new Point(-1, -1);
// This coordinate is relative to its parent
private Point mIconLastTouchPos = new Point();
// This coordinate is used to proxy click and long-click events
private Point mPredictionIconTouchDownPos = new Point();
private final Point mIconLastTouchPos = new Point();
// This coordinate is used to proxy click and long-click events to the prediction bar icons
private final Point mPredictionIconTouchDownPos = new Point();
private int mContentMarginStart;
// Normal container insets
private int mContainerInset;