下面列出了android.support.v7.widget.RecyclerView.AdapterDataObserver#org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void init(
UiConfig uiConfig, ContextMenuManager contextMenuManager, NewTabPageAdapter adapter) {
mUiConfig = uiConfig;
mContextMenuManager = contextMenuManager;
setAdapter(adapter);
}
public NewTabPageAdapter getNewTabPageAdapter() {
return (NewTabPageAdapter) getAdapter();
}
public SuggestionsBottomSheetContent(final ChromeActivity activity, final BottomSheet sheet,
TabModelSelector tabModelSelector, SnackbarManager snackbarManager) {
Profile profile = Profile.getLastUsedProfile();
SuggestionsNavigationDelegate navigationDelegate =
new SuggestionsNavigationDelegateImpl(activity, profile, sheet, tabModelSelector);
mTileGroupDelegate = new TileGroupDelegateImpl(
activity, profile, tabModelSelector, navigationDelegate, snackbarManager);
mSuggestionsUiDelegate = createSuggestionsDelegate(
profile, navigationDelegate, sheet, activity.getReferencePool());
mView = LayoutInflater.from(activity).inflate(
R.layout.suggestions_bottom_sheet_content, null);
mRecyclerView = (SuggestionsRecyclerView) mView.findViewById(R.id.recycler_view);
TouchEnabledDelegate touchEnabledDelegate = new TouchEnabledDelegate() {
@Override
public void setTouchEnabled(boolean enabled) {
activity.getBottomSheet().setTouchEnabled(enabled);
}
};
mContextMenuManager =
new ContextMenuManager(activity, navigationDelegate, touchEnabledDelegate);
activity.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager);
mSuggestionsUiDelegate.addDestructionObserver(new DestructionObserver() {
@Override
public void onDestroy() {
activity.getWindowAndroid().removeContextMenuCloseListener(mContextMenuManager);
}
});
UiConfig uiConfig = new UiConfig(mRecyclerView);
final NewTabPageAdapter adapter = new NewTabPageAdapter(mSuggestionsUiDelegate,
/* aboveTheFoldView = */ null, uiConfig, OfflinePageBridge.getForProfile(profile),
mContextMenuManager, mTileGroupDelegate);
mRecyclerView.init(uiConfig, mContextMenuManager, adapter);
mBottomSheetObserver = new SuggestionsSheetVisibilityChangeObserver(this, activity) {
@Override
public void onSheetOpened() {
mRecyclerView.scrollToPosition(0);
adapter.refreshSuggestions();
mSuggestionsUiDelegate.getEventReporter().onSurfaceOpened();
mRecyclerView.getScrollEventReporter().reset();
if (ChromeFeatureList.isEnabled(
ChromeFeatureList.CONTEXTUAL_SUGGESTIONS_CAROUSEL)
&& sheet.getActiveTab() != null) {
updateContextualSuggestions(sheet.getActiveTab().getUrl());
}
super.onSheetOpened();
}
@Override
public void onContentShown() {
SuggestionsMetrics.recordSurfaceVisible();
}
@Override
public void onContentHidden() {
SuggestionsMetrics.recordSurfaceHidden();
}
@Override
public void onContentStateChanged(@BottomSheet.SheetState int contentState) {
if (contentState == BottomSheet.SHEET_STATE_HALF) {
SuggestionsMetrics.recordSurfaceHalfVisible();
} else if (contentState == BottomSheet.SHEET_STATE_FULL) {
SuggestionsMetrics.recordSurfaceFullyVisible();
}
}
};
mShadowView = (FadingShadowView) mView.findViewById(R.id.shadow);
mShadowView.init(
ApiCompatibilityUtils.getColor(mView.getResources(), R.color.toolbar_shadow_color),
FadingShadow.POSITION_TOP);
mRecyclerView.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
boolean shadowVisible = mRecyclerView.canScrollVertically(-1);
mShadowView.setVisibility(shadowVisible ? View.VISIBLE : View.GONE);
}
});
final LocationBar locationBar = (LocationBar) sheet.findViewById(R.id.location_bar);
mRecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
@SuppressLint("ClickableViewAccessibility")
public boolean onTouch(View view, MotionEvent motionEvent) {
if (locationBar != null && locationBar.isUrlBarFocused()) {
locationBar.setUrlBarFocus(false);
}
// Never intercept the touch event.
return false;
}
});
}