use of android.support.v7.widget.helper.ItemTouchHelper in project SmartNews by JavenLu.
the class NewsChannelActivity method initItemDragHelper.
private void initItemDragHelper() {
ItemDragHelperCallback itemDragHelperCallback = new ItemDragHelperCallback(newsMineAdapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragHelperCallback);
itemTouchHelper.attachToRecyclerView(mineRecyclerView);
newsMineAdapter.newsChannelDelegate.setOnLongPressClickListener(position -> {
newsMineAdapter.setLongPressEnable(itemDragHelperCallback, position);
});
}
use of android.support.v7.widget.helper.ItemTouchHelper in project GeometricWeather by WangDaYeeeeee.
the class ManageActivity method initWidget.
private void initWidget() {
this.container = findViewById(R.id.activity_manage_container);
this.cardView = findViewById(R.id.activity_manage_searchBar);
cardView.setOnClickListener(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cardView.setTransitionName(getString(R.string.transition_activity_search_bar));
}
this.recyclerView = findViewById(R.id.activity_manage_recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerView.addItemDecoration(new ListDecoration(this));
recyclerView.setAdapter(adapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new LocationSwipeCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT));
itemTouchHelper.attachToRecyclerView(recyclerView);
}
use of android.support.v7.widget.helper.ItemTouchHelper in project Zom-Android by zom.
the class ContactsListFragment method setupRecyclerView.
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
Uri baseUri = Imps.Contacts.CONTENT_URI;
Uri.Builder builder = baseUri.buildUpon();
mUri = builder.build();
mLoaderManager = getLoaderManager();
mLoaderCallbacks = new MyLoaderCallbacks();
mLoaderManager.initLoader(mLoaderId, null, mLoaderCallbacks);
Cursor cursor = null;
mAdapter = new ContactListRecyclerViewAdapter(getActivity(), cursor);
if (mAdapter.getItemCount() == 0) {
mRecView.setVisibility(View.GONE);
mEmptyView.setVisibility(View.VISIBLE);
} else {
mRecView.setVisibility(View.VISIBLE);
mEmptyView.setVisibility(View.GONE);
}
// init swipe to dismiss logic
ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.RIGHT, ItemTouchHelper.RIGHT) {
public static final float ALPHA_FULL = 1.0f;
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
// We only want the active item to change
if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
if (viewHolder instanceof ContactViewHolder) {
// Let the view holder know that this item is being moved or dragged
ContactViewHolder itemViewHolder = (ContactViewHolder) viewHolder;
// itemViewHolder.onItemSelected();
}
}
super.onSelectedChanged(viewHolder, actionState);
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
int contactType = Imps.Contacts.TYPE_NORMAL;
if (viewHolder instanceof ContactViewHolder) {
// Let the view holder know that this item is being moved or dragged
ContactViewHolder itemViewHolder = (ContactViewHolder) viewHolder;
contactType = itemViewHolder.mType;
}
// Get RecyclerView item from the ViewHolder
View itemView = viewHolder.itemView;
Paint p = new Paint();
Bitmap icon;
if (dX > 0) {
if (contactType == Imps.Contacts.TYPE_HIDDEN || contactType == Imps.Contacts.TYPE_HIDDEN_GROUP) {
icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.ic_unarchive_white_24dp);
p.setColor(getResources().getColor(R.color.holo_green_dark));
} else {
icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.ic_archive_white_24dp);
p.setARGB(255, 150, 150, 150);
}
// Draw Rect with varying right side, equal to displacement dX
c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX, (float) itemView.getBottom(), p);
// Set the image icon for Right swipe
c.drawBitmap(icon, (float) itemView.getLeft() + convertDpToPx(16), (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - icon.getHeight()) / 2, p);
}
// Fade out the view as it is swiped out of the parent's bounds
final float alpha = ALPHA_FULL - Math.abs(dX) / (float) viewHolder.itemView.getWidth();
viewHolder.itemView.setAlpha(alpha);
viewHolder.itemView.setTranslationX(dX);
} else {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
private int convertDpToPx(int dp) {
return Math.round(dp * (getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
viewHolder.itemView.setAlpha(ALPHA_FULL);
if (viewHolder instanceof ContactViewHolder) {
// Tell the view holder it's time to restore the idle state
ContactViewHolder itemViewHolder = (ContactViewHolder) viewHolder;
// itemViewHolder.onItemClear();
}
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// callback for drag-n-drop, false to skip this feature
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// callback for swipe to dismiss, removing item from data and adapter
int position = viewHolder.getAdapterPosition();
if (viewHolder instanceof ContactViewHolder) {
// Tell the view holder it's time to restore the idle state
ContactViewHolder itemViewHolder = (ContactViewHolder) viewHolder;
// itemViewHolder.onItemClear();
final boolean doArchive = (itemViewHolder.mType == Imps.Contacts.TYPE_NORMAL);
final int contactType = itemViewHolder.mType;
final String address = itemViewHolder.mAddress;
final long providerId = itemViewHolder.mProviderId;
final long accountId = itemViewHolder.mAccountId;
if (doArchive) {
Snackbar snack = Snackbar.make(mRecView, getString(R.string.are_you_sure), Snackbar.LENGTH_LONG);
snack.setAction(R.string.yes, new View.OnClickListener() {
@Override
public void onClick(View view) {
archiveContact(getActivity(), address, contactType, providerId, accountId);
}
});
snack.show();
} else {
Snackbar snack = Snackbar.make(mRecView, getString(R.string.action_unarchived), Snackbar.LENGTH_SHORT);
unarchiveContact(getActivity(), address, contactType, providerId, accountId);
snack.show();
}
}
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
});
swipeToDismissTouchHelper.attachToRecyclerView(recyclerView);
}
use of android.support.v7.widget.helper.ItemTouchHelper in project Zom-Android by zom.
the class ConversationListFragment method setupRecyclerView.
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
Uri baseUri = Imps.Contacts.CONTENT_URI_CHAT_CONTACTS_BY;
Uri.Builder builder = baseUri.buildUpon();
mUri = builder.build();
if (mLoaderManager == null || mAdapter == null) {
mLoaderManager = getLoaderManager();
mLoaderCallbacks = new MyLoaderCallbacks();
mLoaderManager.initLoader(mLoaderId, null, mLoaderCallbacks);
Cursor cursor = null;
mAdapter = new ConversationListRecyclerViewAdapter(getActivity(), cursor);
} else {
mRecView.setAdapter(mAdapter);
}
// init swipe to dismiss logic
ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.RIGHT, ItemTouchHelper.RIGHT) {
public static final float ALPHA_FULL = 1.0f;
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
// We only want the active item to change
if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
if (viewHolder instanceof ConversationViewHolder) {
// Let the view holder know that this item is being moved or dragged
ConversationViewHolder itemViewHolder = (ConversationViewHolder) viewHolder;
itemViewHolder.onItemSelected();
}
}
super.onSelectedChanged(viewHolder, actionState);
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
// Get RecyclerView item from the ViewHolder
View itemView = viewHolder.itemView;
Paint p = new Paint();
Bitmap icon;
if (dX > 0) {
if (mChatType == Imps.Chats.CHAT_TYPE_ARCHIVED) {
icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.ic_unarchive_white_24dp);
p.setColor(getResources().getColor(R.color.holo_green_dark));
} else {
icon = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.ic_archive_white_24dp);
p.setARGB(255, 150, 150, 150);
}
// Draw Rect with varying right side, equal to displacement dX
c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX, (float) itemView.getBottom(), p);
// Set the image icon for Right swipe
c.drawBitmap(icon, (float) itemView.getLeft() + convertDpToPx(16), (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - icon.getHeight()) / 2, p);
}
// Fade out the view as it is swiped out of the parent's bounds
final float alpha = ALPHA_FULL - Math.abs(dX) / (float) viewHolder.itemView.getWidth();
viewHolder.itemView.setAlpha(alpha);
viewHolder.itemView.setTranslationX(dX);
} else {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
private int convertDpToPx(int dp) {
return Math.round(dp * (getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
viewHolder.itemView.setAlpha(ALPHA_FULL);
if (viewHolder instanceof ConversationViewHolder) {
// Tell the view holder it's time to restore the idle state
ConversationViewHolder itemViewHolder = (ConversationViewHolder) viewHolder;
itemViewHolder.onItemClear();
}
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// callback for drag-n-drop, false to skip this feature
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// callback for swipe to dismiss, removing item from data and adapter
int position = viewHolder.getAdapterPosition();
final long itemId = mAdapter.getItemId(position);
if (mChatType == Imps.Chats.CHAT_TYPE_ACTIVE) {
archiveConversation(itemId);
Snackbar snack = Snackbar.make(mRecView, getString(R.string.action_archived), Snackbar.LENGTH_LONG);
snack.setAction(R.string.action_undo, new View.OnClickListener() {
@Override
public void onClick(View view) {
unarchiveConversation(itemId);
}
});
snack.show();
} else {
unarchiveConversation(itemId);
Snackbar snack = Snackbar.make(mRecView, getString(R.string.action_unarchived), Snackbar.LENGTH_SHORT);
snack.show();
}
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
});
swipeToDismissTouchHelper.attachToRecyclerView(recyclerView);
if (mAdapter.getItemCount() == 0) {
mRecView.setVisibility(View.GONE);
mEmptyView.setVisibility(View.VISIBLE);
mEmptyViewImage.setVisibility(View.VISIBLE);
} else if (mRecView.getVisibility() == View.GONE) {
mRecView.setVisibility(View.VISIBLE);
mEmptyView.setVisibility(View.GONE);
mEmptyViewImage.setVisibility(View.GONE);
}
}
use of android.support.v7.widget.helper.ItemTouchHelper in project Osmand by osmandapp.
the class MapMarkersGroupsFragment method onCreateView.
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final MapActivity mapActivity = (MapActivity) getActivity();
final boolean night = !mapActivity.getMyApplication().getSettings().isLightContent();
mainView = inflater.inflate(R.layout.fragment_map_markers_groups, container, false);
Fragment selectionMarkersGroupFragment = getChildFragmentManager().findFragmentByTag(SelectionMarkersGroupBottomSheetDialogFragment.TAG);
if (selectionMarkersGroupFragment != null) {
((SelectionMarkersGroupBottomSheetDialogFragment) selectionMarkersGroupFragment).setListener(createAddMarkersGroupFragmentListener());
}
Fragment historyMarkerMenuFragment = getChildFragmentManager().findFragmentByTag(HistoryMarkerMenuBottomSheetDialogFragment.TAG);
if (historyMarkerMenuFragment != null) {
((HistoryMarkerMenuBottomSheetDialogFragment) historyMarkerMenuFragment).setListener(createHistoryMarkerMenuListener());
}
final EmptyStateRecyclerView recyclerView = (EmptyStateRecyclerView) mainView.findViewById(R.id.list);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
compassUpdateAllowed = newState == RecyclerView.SCROLL_STATE_IDLE;
}
});
backgroundPaint.setColor(ContextCompat.getColor(getActivity(), night ? R.color.dashboard_divider_dark : R.color.dashboard_divider_light));
backgroundPaint.setStyle(Paint.Style.FILL_AND_STROKE);
backgroundPaint.setAntiAlias(true);
iconPaint.setAntiAlias(true);
iconPaint.setFilterBitmap(true);
iconPaint.setDither(true);
textPaint.setTextSize(getResources().getDimension(R.dimen.default_desc_text_size));
textPaint.setFakeBoldText(true);
textPaint.setAntiAlias(true);
final String delStr = getString(R.string.shared_string_delete).toUpperCase();
final String moveToHistoryStr = getString(R.string.move_to_history).toUpperCase();
final Rect bounds = new Rect();
textPaint.getTextBounds(delStr, 0, delStr.length(), bounds);
final int delStrWidth = bounds.width();
final int textHeight = bounds.height();
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
private float marginSides = getResources().getDimension(R.dimen.list_content_padding);
private Bitmap deleteBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_delete_dark);
private Bitmap historyBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_history);
private boolean iconHidden;
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
boolean markerViewHolder = viewHolder instanceof MapMarkerItemViewHolder;
int pos = viewHolder.getAdapterPosition();
if (markerViewHolder && pos != -1) {
MapMarker marker = (MapMarker) adapter.getItem(pos);
if (marker.history) {
return ItemTouchHelper.LEFT;
} else {
return ItemTouchHelper.RIGHT;
}
} else {
return 0;
}
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE && viewHolder instanceof MapMarkerItemViewHolder) {
if (!iconHidden && isCurrentlyActive) {
((MapMarkerItemViewHolder) viewHolder).optionsBtn.setVisibility(View.GONE);
compassUpdateAllowed = false;
iconHidden = true;
}
View itemView = viewHolder.itemView;
int colorIcon;
int colorText;
if (Math.abs(dX) > itemView.getWidth() / 2) {
colorIcon = R.color.map_widget_blue;
colorText = R.color.map_widget_blue;
} else {
colorIcon = night ? 0 : R.color.icon_color;
colorText = R.color.dashboard_subheader_text_light;
}
if (colorIcon != 0) {
iconPaint.setColorFilter(new PorterDuffColorFilter(ContextCompat.getColor(getActivity(), colorIcon), PorterDuff.Mode.SRC_IN));
}
textPaint.setColor(ContextCompat.getColor(getActivity(), colorText));
float textMarginTop = ((float) itemView.getHeight() - (float) textHeight) / 2;
if (dX > 0) {
c.drawRect(itemView.getLeft(), itemView.getTop(), dX, itemView.getBottom(), backgroundPaint);
float iconMarginTop = ((float) itemView.getHeight() - (float) historyBitmap.getHeight()) / 2;
c.drawBitmap(historyBitmap, itemView.getLeft() + marginSides, itemView.getTop() + iconMarginTop, iconPaint);
c.drawText(moveToHistoryStr, itemView.getLeft() + 2 * marginSides + historyBitmap.getWidth(), itemView.getTop() + textMarginTop + textHeight, textPaint);
} else {
c.drawRect(itemView.getRight() + dX, itemView.getTop(), itemView.getRight(), itemView.getBottom(), backgroundPaint);
float iconMarginTop = ((float) itemView.getHeight() - (float) deleteBitmap.getHeight()) / 2;
c.drawBitmap(deleteBitmap, itemView.getRight() - deleteBitmap.getWidth() - marginSides, itemView.getTop() + iconMarginTop, iconPaint);
c.drawText(delStr, itemView.getRight() - deleteBitmap.getWidth() - 2 * marginSides - delStrWidth, itemView.getTop() + textMarginTop + textHeight, textPaint);
}
}
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof MapMarkerItemViewHolder) {
((MapMarkerItemViewHolder) viewHolder).optionsBtn.setVisibility(View.VISIBLE);
iconHidden = false;
compassUpdateAllowed = true;
}
super.clearView(recyclerView, viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, final int direction) {
final int pos = viewHolder.getAdapterPosition();
Object item = adapter.getItem(pos);
if (item instanceof MapMarker) {
final MapMarker marker = (MapMarker) item;
int snackbarStringRes;
if (direction == ItemTouchHelper.RIGHT) {
mapActivity.getMyApplication().getMapMarkersHelper().moveMapMarkerToHistory((MapMarker) item);
snackbarStringRes = R.string.marker_moved_to_history;
} else {
mapActivity.getMyApplication().getMapMarkersHelper().removeMarker((MapMarker) item);
snackbarStringRes = R.string.item_removed;
}
updateAdapter();
snackbar = Snackbar.make(viewHolder.itemView, snackbarStringRes, Snackbar.LENGTH_LONG).setAction(R.string.shared_string_undo, new View.OnClickListener() {
@Override
public void onClick(View view) {
if (direction == ItemTouchHelper.RIGHT) {
mapActivity.getMyApplication().getMapMarkersHelper().restoreMarkerFromHistory(marker, 0);
} else {
mapActivity.getMyApplication().getMapMarkersHelper().addMarker(marker);
}
updateAdapter();
}
});
AndroidUtils.setSnackbarTextColor(snackbar, R.color.color_dialog_buttons_dark);
snackbar.show();
}
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
adapter = new MapMarkersGroupsAdapter(mapActivity);
adapter.setListener(new MapMarkersGroupsAdapter.MapMarkersGroupsAdapterListener() {
@Override
public void onItemClick(View view) {
int pos = recyclerView.getChildAdapterPosition(view);
if (pos == RecyclerView.NO_POSITION) {
return;
}
Object item = adapter.getItem(pos);
if (item instanceof MapMarker) {
MapMarker marker = (MapMarker) item;
OsmandApplication app = mapActivity.getMyApplication();
if (!marker.history) {
if (app.getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) {
app.getMapMarkersHelper().moveMarkerToTop(marker);
updateAdapter();
} else {
FavouritePoint fav = marker.favouritePoint == null ? app.getFavorites().getVisibleFavByLatLon(marker.point) : marker.favouritePoint;
if (fav != null) {
showMap(marker.point, fav.getPointDescription(), fav);
return;
}
WptPt pt = marker.wptPt == null ? app.getSelectedGpxHelper().getVisibleWayPointByLatLon(marker.point) : marker.wptPt;
if (pt != null) {
showMap(marker.point, pt.getPointDescription(mapActivity), pt);
return;
}
Amenity mapObj = mapActivity.getMapLayers().getMapMarkersLayer().getMapObjectByMarker(marker);
PointDescription desc = mapObj == null ? marker.getPointDescription(mapActivity) : mapActivity.getMapLayers().getPoiMapLayer().getObjectName(mapObj);
showMap(marker.point, desc, mapObj == null ? marker : mapObj);
}
} else {
showHistoryMenuFragment(pos, marker);
}
}
}
private void showMap(LatLon latLon, PointDescription desc, Object objToShow) {
mapActivity.getMyApplication().getSettings().setMapLocationToShow(latLon.getLatitude(), latLon.getLongitude(), 15, desc, true, objToShow);
MapActivity.launchMapActivityMoveToTop(mapActivity);
((DialogFragment) getParentFragment()).dismiss();
}
private void showHistoryMenuFragment(int pos, MapMarker marker) {
HistoryMarkerMenuBottomSheetDialogFragment fragment = new HistoryMarkerMenuBottomSheetDialogFragment();
fragment.setUsedOnMap(false);
Bundle arguments = new Bundle();
arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_POSITION, pos);
arguments.putString(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_NAME, marker.getName(mapActivity));
arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_COLOR_INDEX, marker.colorIndex);
arguments.putLong(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_VISITED_DATE, marker.visitedDate);
fragment.setArguments(arguments);
fragment.setListener(createHistoryMarkerMenuListener());
fragment.show(getChildFragmentManager(), HistoryMarkerMenuBottomSheetDialogFragment.TAG);
}
});
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
changeFabVisibilityIfNeeded();
}
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
changeFabVisibilityIfNeeded();
}
@Override
public void onItemRangeRemoved(int positionStart, int itemCount) {
changeFabVisibilityIfNeeded();
}
});
final View emptyView = mainView.findViewById(R.id.empty_view);
mainView.findViewById(R.id.import_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openAddGroupMenu();
}
});
ImageView emptyImageView = (ImageView) emptyView.findViewById(R.id.empty_state_image_view);
if (Build.VERSION.SDK_INT >= 18) {
emptyImageView.setImageResource(night ? R.drawable.ic_empty_state_marker_group_night : R.drawable.ic_empty_state_marker_group_day);
} else {
emptyImageView.setVisibility(View.INVISIBLE);
}
recyclerView.setEmptyView(emptyView);
recyclerView.setAdapter(adapter);
mainView.findViewById(R.id.add_group_fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openAddGroupMenu();
}
});
if (groupIdToOpen != null) {
int groupHeaderPosition = adapter.getGroupHeaderPosition(groupIdToOpen);
if (groupHeaderPosition != -1) {
((EmptyStateRecyclerView) mainView.findViewById(R.id.list)).scrollToPosition(groupHeaderPosition);
}
}
return mainView;
}
Aggregations