Search in sources :

Example 6 with SelectExtension

use of com.mikepenz.fastadapter.select.SelectExtension in project Hentoid by avluis.

the class BookmarksDialogFragment method onViewCreated.

@Override
public void onViewCreated(@NonNull View rootView, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(rootView, savedInstanceState);
    MaterialButton homepage = requireViewById(rootView, R.id.bookmark_homepage_btn);
    homepage.setIcon(ContextCompat.getDrawable(requireContext(), site.getIco()));
    homepage.setOnClickListener(v -> parent.loadUrl(site.getUrl()));
    List<SiteBookmark> bookmarks = reloadBookmarks();
    // Gets (or creates and attaches if not yet existing) the extension from the given `FastAdapter`
    selectExtension = fastAdapter.getOrCreateExtension(SelectExtension.class);
    if (selectExtension != null) {
        selectExtension.setSelectable(true);
        selectExtension.setMultiSelect(true);
        selectExtension.setSelectOnLongClick(true);
        selectExtension.setSelectWithItemUpdate(true);
        selectExtension.setSelectionListener((i, b) -> this.onSelectionChanged());
        FastAdapterPreClickSelectHelper<TextItem<SiteBookmark>> helper = new FastAdapterPreClickSelectHelper<>(selectExtension);
        fastAdapter.setOnPreClickListener(helper::onPreClickListener);
        fastAdapter.setOnPreLongClickListener(helper::onPreLongClickListener);
    }
    recyclerView = requireViewById(rootView, R.id.bookmarks_list);
    // Activate drag & drop
    SimpleDragCallback dragCallback = new SimpleDragCallback(this);
    dragCallback.setNotifyAllDrops(true);
    touchHelper = new ItemTouchHelper(dragCallback);
    touchHelper.attachToRecyclerView(recyclerView);
    recyclerView.setAdapter(fastAdapter);
    fastAdapter.setOnClickListener((v, a, i, p) -> onItemClick(i));
    fastAdapter.addEventHook(new TextItem.DragHandlerTouchEvent<>(position -> {
        RecyclerView.ViewHolder vh = recyclerView.findViewHolderForAdapterPosition(position);
        if (vh != null)
            touchHelper.startDrag(vh);
    }));
    selectionToolbar = requireViewById(rootView, R.id.toolbar);
    selectionToolbar.setOnMenuItemClickListener(this::selectionToolbarOnItemClicked);
    editMenu = selectionToolbar.getMenu().findItem(R.id.action_edit);
    copyMenu = selectionToolbar.getMenu().findItem(R.id.action_copy);
    homeMenu = selectionToolbar.getMenu().findItem(R.id.action_home);
    bookmarkCurrentBtn = requireViewById(rootView, R.id.bookmark_current_btn);
    Optional<SiteBookmark> currentBookmark = Stream.of(bookmarks).filter(b -> SiteBookmark.urlsAreSame(b.getUrl(), url)).findFirst();
    if (currentBookmark.isPresent())
        bookmarkId = currentBookmark.get().id;
    updateBookmarkButton();
}
Also used : InputDialog(me.devsaki.hentoid.ui.InputDialog) Context(android.content.Context) Bundle(android.os.Bundle) TextItem(me.devsaki.hentoid.viewholders.TextItem) Stream(com.annimon.stream.Stream) NonNull(androidx.annotation.NonNull) SimpleDragCallback(com.mikepenz.fastadapter.drag.SimpleDragCallback) Completable(io.reactivex.Completable) IDraggableViewHolder(me.devsaki.hentoid.viewholders.IDraggableViewHolder) MenuItem(android.view.MenuItem) FragmentActivity(androidx.fragment.app.FragmentActivity) SuppressLint(android.annotation.SuppressLint) Optional(com.annimon.stream.Optional) Site(me.devsaki.hentoid.enums.Site) FastAdapterPreClickSelectHelper(me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) ItemAdapter(com.mikepenz.fastadapter.adapters.ItemAdapter) MaterialButton(com.google.android.material.button.MaterialButton) Helper(me.devsaki.hentoid.util.Helper) SelectExtension(com.mikepenz.fastadapter.select.SelectExtension) Handler(android.os.Handler) Looper(android.os.Looper) View(android.view.View) Schedulers(io.reactivex.schedulers.Schedulers) RecyclerView(androidx.recyclerview.widget.RecyclerView) ContextCompat(androidx.core.content.ContextCompat) ItemTouchCallback(com.mikepenz.fastadapter.drag.ItemTouchCallback) LayoutInflater(android.view.LayoutInflater) Set(java.util.Set) ToastHelper(me.devsaki.hentoid.util.ToastHelper) SiteBookmark(me.devsaki.hentoid.database.domains.SiteBookmark) ViewGroup(android.view.ViewGroup) DragDropUtil(com.mikepenz.fastadapter.utils.DragDropUtil) ObjectBoxDAO(me.devsaki.hentoid.database.ObjectBoxDAO) R(me.devsaki.hentoid.R) ViewCompat.requireViewById(androidx.core.view.ViewCompat.requireViewById) List(java.util.List) Disposable(io.reactivex.disposables.Disposable) Nullable(androidx.annotation.Nullable) FastAdapter(com.mikepenz.fastadapter.FastAdapter) Toolbar(androidx.appcompat.widget.Toolbar) CollectionDAO(me.devsaki.hentoid.database.CollectionDAO) NotNull(org.jetbrains.annotations.NotNull) DialogFragment(androidx.fragment.app.DialogFragment) TextItem(me.devsaki.hentoid.viewholders.TextItem) SimpleDragCallback(com.mikepenz.fastadapter.drag.SimpleDragCallback) SelectExtension(com.mikepenz.fastadapter.select.SelectExtension) MaterialButton(com.google.android.material.button.MaterialButton) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) SiteBookmark(me.devsaki.hentoid.database.domains.SiteBookmark) IDraggableViewHolder(me.devsaki.hentoid.viewholders.IDraggableViewHolder) FastAdapterPreClickSelectHelper(me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper)

Example 7 with SelectExtension

use of com.mikepenz.fastadapter.select.SelectExtension in project Hentoid by avluis.

the class LibraryContentFragment method setPagingMethod.

/**
 * Initialize the paging method of the screen
 *
 * @param isEndless True if endless mode has to be set; false if paged mode has to be set
 */
private void setPagingMethod(boolean isEndless, boolean isEditMode) {
    // Editing will always be done in Endless mode
    viewModel.setPagingMethod(isEndless || isEditMode);
    // RecyclerView horizontal centering
    ViewGroup.LayoutParams layoutParams = recyclerView.getLayoutParams();
    recyclerView.setLayoutParams(layoutParams);
    // Pager appearance
    if (!isEndless && !isEditMode) {
        pager.setCurrentPage(1);
        pager.show();
    } else
        pager.hide();
    // Adapter initialization
    if (isEndless && !isEditMode) {
        @ContentItem.ViewType int viewType;
        if (Preferences.Constant.LIBRARY_DISPLAY_LIST == Preferences.getLibraryDisplay())
            viewType = ContentItem.ViewType.LIBRARY;
        else
            viewType = ContentItem.ViewType.LIBRARY_GRID;
        pagedItemAdapter = new PagedModelAdapter<>(asyncDifferConfig, i -> new ContentItem(viewType), c -> new ContentItem(c, touchHelper, viewType, this::onDeleteSwipedBook));
        fastAdapter = FastAdapter.with(pagedItemAdapter);
        ContentItem item = new ContentItem(viewType);
        fastAdapter.registerItemFactory(item.getType(), item);
        itemAdapter = null;
    } else {
        // Paged mode or edit mode
        itemAdapter = new ItemAdapter<>();
        fastAdapter = FastAdapter.with(itemAdapter);
        pagedItemAdapter = null;
    }
    if (!fastAdapter.hasObservers())
        fastAdapter.setHasStableIds(true);
    // Item click listener
    fastAdapter.setOnClickListener((v, a, i, p) -> onItemClick(p, i));
    // Favourite button click listener
    fastAdapter.addEventHook(new ClickEventHook<ContentItem>() {

        @Override
        public void onClick(@NotNull View view, int i, @NotNull FastAdapter<ContentItem> fastAdapter, @NotNull ContentItem item) {
            if (item.getContent() != null)
                onBookFavouriteClick(item.getContent());
        }

        @org.jetbrains.annotations.Nullable
        @Override
        public View onBind(RecyclerView.@NotNull ViewHolder viewHolder) {
            if (viewHolder instanceof ContentItem.ContentViewHolder) {
                return ((ContentItem.ContentViewHolder) viewHolder).getFavouriteButton();
            }
            return super.onBind(viewHolder);
        }
    });
    // Site button click listener
    fastAdapter.addEventHook(new ClickEventHook<ContentItem>() {

        @Override
        public void onClick(@NotNull View view, int i, @NotNull FastAdapter<ContentItem> fastAdapter, @NotNull ContentItem item) {
            if (item.getContent() != null)
                onBookSourceClick(item.getContent());
        }

        @org.jetbrains.annotations.Nullable
        @Override
        public View onBind(RecyclerView.@NotNull ViewHolder viewHolder) {
            if (viewHolder instanceof ContentItem.ContentViewHolder) {
                return ((ContentItem.ContentViewHolder) viewHolder).getSiteButton();
            }
            return super.onBind(viewHolder);
        }
    });
    // "To top" button click listener (groups view only)
    fastAdapter.addEventHook(new ClickEventHook<ContentItem>() {

        @Override
        public void onClick(@NotNull View view, int position, @NotNull FastAdapter<ContentItem> fastAdapter, @NotNull ContentItem item) {
            itemTouchOnMove(position, 0);
        }

        @org.jetbrains.annotations.Nullable
        @Override
        public View onBind(RecyclerView.@NotNull ViewHolder viewHolder) {
            if (viewHolder instanceof ContentItem.ContentViewHolder) {
                return ((ContentItem.ContentViewHolder) viewHolder).getTopButton();
            }
            return super.onBind(viewHolder);
        }
    });
    // "To bottom" button click listener (groups view only)
    fastAdapter.addEventHook(new ClickEventHook<ContentItem>() {

        @Override
        public void onClick(@NotNull View view, int position, @NotNull FastAdapter<ContentItem> fastAdapter, @NotNull ContentItem item) {
            itemTouchOnMove(position, fastAdapter.getItemCount() - 1);
        }

        @org.jetbrains.annotations.Nullable
        @Override
        public View onBind(RecyclerView.@NotNull ViewHolder viewHolder) {
            if (viewHolder instanceof ContentItem.ContentViewHolder) {
                return ((ContentItem.ContentViewHolder) viewHolder).getBottomButton();
            }
            return super.onBind(viewHolder);
        }
    });
    // Gets (or creates and attaches if not yet existing) the extension from the given `FastAdapter`
    selectExtension = fastAdapter.getOrCreateExtension(SelectExtension.class);
    if (selectExtension != null) {
        selectExtension.setSelectable(true);
        selectExtension.setMultiSelect(true);
        selectExtension.setSelectOnLongClick(true);
        selectExtension.setSelectWithItemUpdate(true);
        selectExtension.setSelectionListener((item, b) -> this.onSelectionChanged());
        FastAdapterPreClickSelectHelper<ContentItem> helper = new FastAdapterPreClickSelectHelper<>(selectExtension);
        fastAdapter.setOnPreClickListener(helper::onPreClickListener);
        fastAdapter.setOnPreLongClickListener(helper::onPreLongClickListener);
    }
    // Drag, drop & swiping
    @DimenRes int dimen = (Preferences.Constant.LIBRARY_DISPLAY_LIST == Preferences.getLibraryDisplay()) ? R.dimen.delete_drawer_width_list : R.dimen.delete_drawer_width_grid;
    SimpleSwipeDrawerDragCallback dragSwipeCallback = new SimpleSwipeDrawerDragCallback(this, ItemTouchHelper.LEFT, this).withSwipeLeft(Helper.dimensAsDp(requireContext(), dimen)).withSensitivity(1.5f).withSurfaceThreshold(0.3f).withNotifyAllDrops(true);
    // Despite its name, that's actually to disable drag on long tap
    dragSwipeCallback.setIsDragEnabled(false);
    touchHelper = new ItemTouchHelper(dragSwipeCallback);
    touchHelper.attachToRecyclerView(recyclerView);
    recyclerView.setAdapter(fastAdapter);
    recyclerView.setHasFixedSize(true);
}
Also used : Bundle(android.os.Bundle) QueueActivity(me.devsaki.hentoid.activities.QueueActivity) NonNull(androidx.annotation.NonNull) AsyncDifferConfig(androidx.recyclerview.widget.AsyncDifferConfig) Uri(android.net.Uri) ImageView(android.widget.ImageView) ISwipeableViewHolder(me.devsaki.hentoid.viewholders.ISwipeableViewHolder) ClickEventHook(com.mikepenz.fastadapter.listeners.ClickEventHook) Attribute(me.devsaki.hentoid.database.domains.Attribute) AutofitGridLayoutManager(me.devsaki.hentoid.widget.AutofitGridLayoutManager) Chapter(me.devsaki.hentoid.database.domains.Chapter) OnBackPressedCallback(androidx.activity.OnBackPressedCallback) Site(me.devsaki.hentoid.enums.Site) Handler(android.os.Handler) Looper(android.os.Looper) Fragment(androidx.fragment.app.Fragment) EV_SEARCH(me.devsaki.hentoid.events.CommunicationEvent.EV_SEARCH) ItemTouchCallback(com.mikepenz.fastadapter.drag.ItemTouchCallback) RC_CONTENTS(me.devsaki.hentoid.events.CommunicationEvent.RC_CONTENTS) Set(java.util.Set) ToastHelper(me.devsaki.hentoid.util.ToastHelper) CommunicationEvent(me.devsaki.hentoid.events.CommunicationEvent) IdRes(androidx.annotation.IdRes) StringRes(androidx.annotation.StringRes) Nullable(androidx.annotation.Nullable) ProcessEvent(me.devsaki.hentoid.events.ProcessEvent) ThemeHelper(me.devsaki.hentoid.util.ThemeHelper) FastAdapter(com.mikepenz.fastadapter.FastAdapter) ExtensionsFactories(com.mikepenz.fastadapter.extensions.ExtensionsFactories) QUEUE_NEW_DOWNLOADS_POSITION_TOP(me.devsaki.hentoid.util.Preferences.Constant.QUEUE_NEW_DOWNLOADS_POSITION_TOP) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) QUEUE_NEW_DOWNLOADS_POSITION_BOTTOM(me.devsaki.hentoid.util.Preferences.Constant.QUEUE_NEW_DOWNLOADS_POSITION_BOTTOM) Debouncer(me.devsaki.hentoid.util.Debouncer) Stream(com.annimon.stream.Stream) IDraggableViewHolder(me.devsaki.hentoid.viewholders.IDraggableViewHolder) AddQueueMenu(me.devsaki.hentoid.widget.AddQueueMenu) SystemClock(android.os.SystemClock) BaseTransientBottomBar(com.google.android.material.snackbar.BaseTransientBottomBar) AppUpdatedEvent(me.devsaki.hentoid.events.AppUpdatedEvent) ArrayList(java.util.ArrayList) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) Helper(me.devsaki.hentoid.util.Helper) ViewModelProvider(androidx.lifecycle.ViewModelProvider) FastScrollerBuilder(me.zhanghai.android.fastscroll.FastScrollerBuilder) Gravity(android.view.Gravity) R(me.devsaki.hentoid.R) SimpleSwipeDrawerCallback(com.mikepenz.fastadapter.swipe.SimpleSwipeDrawerCallback) SharedPreferences(android.content.SharedPreferences) EV_ADVANCED_SEARCH(me.devsaki.hentoid.events.CommunicationEvent.EV_ADVANCED_SEARCH) SelectExtensionFactory(com.mikepenz.fastadapter.select.SelectExtensionFactory) Content(me.devsaki.hentoid.database.domains.Content) LibraryViewModel(me.devsaki.hentoid.viewmodels.LibraryViewModel) DimenRes(androidx.annotation.DimenRes) LibraryPager(me.devsaki.hentoid.widget.LibraryPager) FastAdapterDiffUtil(com.mikepenz.fastadapter.diff.FastAdapterDiffUtil) MaterialAlertDialogBuilder(com.google.android.material.dialog.MaterialAlertDialogBuilder) StartActivityForResult(androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult) PagedList(androidx.paging.PagedList) ContentHelper(me.devsaki.hentoid.util.ContentHelper) ContentItemBundle(me.devsaki.hentoid.activities.bundles.ContentItemBundle) Optional(com.annimon.stream.Optional) BuildConfig(me.devsaki.hentoid.BuildConfig) ItemAdapter(com.mikepenz.fastadapter.adapters.ItemAdapter) StringHelper(me.devsaki.hentoid.util.StringHelper) Consumer(com.annimon.stream.function.Consumer) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) EV_UPDATE_SORT(me.devsaki.hentoid.events.CommunicationEvent.EV_UPDATE_SORT) DiffUtil(androidx.recyclerview.widget.DiffUtil) EV_DISABLE(me.devsaki.hentoid.events.CommunicationEvent.EV_DISABLE) SimpleSwipeDrawerDragCallback(com.mikepenz.fastadapter.swipe_drag.SimpleSwipeDrawerDragCallback) ThreadMode(org.greenrobot.eventbus.ThreadMode) ViewGroup(android.view.ViewGroup) Timber(timber.log.Timber) ViewModelFactory(me.devsaki.hentoid.viewmodels.ViewModelFactory) Objects(java.util.Objects) ViewCompat.requireViewById(androidx.core.view.ViewCompat.requireViewById) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) TextView(android.widget.TextView) Grouping(me.devsaki.hentoid.enums.Grouping) DocumentFile(androidx.documentfile.provider.DocumentFile) NotNull(org.jetbrains.annotations.NotNull) Snackbar(com.google.android.material.snackbar.Snackbar) Group(me.devsaki.hentoid.database.domains.Group) InputDialog(me.devsaki.hentoid.ui.InputDialog) Context(android.content.Context) LibraryActivity(me.devsaki.hentoid.activities.LibraryActivity) ContentItem(me.devsaki.hentoid.viewholders.ContentItem) Preferences(me.devsaki.hentoid.util.Preferences) DiffCallback(com.mikepenz.fastadapter.diff.DiffCallback) Intent(android.content.Intent) StatusContent(me.devsaki.hentoid.enums.StatusContent) MenuItem(android.view.MenuItem) IAdapter(com.mikepenz.fastadapter.IAdapter) SuppressLint(android.annotation.SuppressLint) QUEUE_NEW_DOWNLOADS_POSITION_ASK(me.devsaki.hentoid.util.Preferences.Constant.QUEUE_NEW_DOWNLOADS_POSITION_ASK) FastAdapterPreClickSelectHelper(me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper) EV_ENABLE(me.devsaki.hentoid.events.CommunicationEvent.EV_ENABLE) SelectExtension(com.mikepenz.fastadapter.select.SelectExtension) EventBus(org.greenrobot.eventbus.EventBus) WeakReference(java.lang.ref.WeakReference) SearchActivityBundle(me.devsaki.hentoid.activities.bundles.SearchActivityBundle) ActivityResultLauncher(androidx.activity.result.ActivityResultLauncher) LayoutInflater(android.view.LayoutInflater) FirebaseCrashlytics(com.google.firebase.crashlytics.FirebaseCrashlytics) FileHelper(me.devsaki.hentoid.util.FileHelper) DragDropUtil(com.mikepenz.fastadapter.utils.DragDropUtil) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) PopupMenu(androidx.appcompat.widget.PopupMenu) Subscribe(org.greenrobot.eventbus.Subscribe) SearchActivity(me.devsaki.hentoid.activities.SearchActivity) ProgressDialogFragment(me.devsaki.hentoid.fragments.ProgressDialogFragment) Collectors.toCollection(com.annimon.stream.Collectors.toCollection) Activity(android.app.Activity) PagedModelAdapter(com.mikepenz.fastadapter.paged.PagedModelAdapter) Collections(java.util.Collections) ActivityResult(androidx.activity.result.ActivityResult) SimpleSwipeDrawerDragCallback(com.mikepenz.fastadapter.swipe_drag.SimpleSwipeDrawerDragCallback) ViewGroup(android.view.ViewGroup) SelectExtension(com.mikepenz.fastadapter.select.SelectExtension) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) TextView(android.widget.TextView) NotNull(org.jetbrains.annotations.NotNull) SuppressLint(android.annotation.SuppressLint) DimenRes(androidx.annotation.DimenRes) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) RecyclerView(androidx.recyclerview.widget.RecyclerView) FastAdapterPreClickSelectHelper(me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper) ContentItem(me.devsaki.hentoid.viewholders.ContentItem)

Example 8 with SelectExtension

use of com.mikepenz.fastadapter.select.SelectExtension in project Hentoid by avluis.

the class LibraryGroupsFragment method setPagingMethod.

/**
 * Initialize the paging method of the screen
 */
private void setPagingMethod() /*boolean isEditMode*/
{
    viewModel.setPagingMethod(true);
    itemAdapter = new ItemAdapter<>();
    fastAdapter = FastAdapter.with(itemAdapter);
    if (!fastAdapter.hasObservers())
        fastAdapter.setHasStableIds(true);
    // Gets (or creates and attaches if not yet existing) the extension from the given `FastAdapter`
    selectExtension = fastAdapter.getOrCreateExtension(SelectExtension.class);
    if (selectExtension != null) {
        selectExtension.setSelectable(true);
        selectExtension.setMultiSelect(true);
        selectExtension.setSelectOnLongClick(true);
        selectExtension.setSelectWithItemUpdate(true);
        selectExtension.setSelectionListener((i, b) -> this.onSelectionChanged());
        FastAdapterPreClickSelectHelper<GroupDisplayItem> helper = new FastAdapterPreClickSelectHelper<>(selectExtension);
        fastAdapter.setOnPreClickListener(helper::onPreClickListener);
        fastAdapter.setOnPreLongClickListener(helper::onPreLongClickListener);
    }
    // Drag, drop & swiping
    if (activity.get().isEditMode()) {
        SimpleDragCallback dragSwipeCallback = new SimpleSwipeDragCallback(this, this, ContextCompat.getDrawable(requireContext(), R.drawable.ic_action_delete_forever)).withSensitivity(10f).withSurfaceThreshold(0.75f);
        dragSwipeCallback.setNotifyAllDrops(true);
        // Despite its name, that's actually to disable drag on long tap
        dragSwipeCallback.setIsDragEnabled(false);
        touchHelper = new ItemTouchHelper(dragSwipeCallback);
        touchHelper.attachToRecyclerView(recyclerView);
    }
    // Item click listener
    fastAdapter.setOnClickListener((v, a, i, p) -> onItemClick(i));
    // Favourite button click listener
    fastAdapter.addEventHook(new ClickEventHook<GroupDisplayItem>() {

        @Override
        public void onClick(@NotNull View view, int i, @NotNull FastAdapter<GroupDisplayItem> fastAdapter, @NotNull GroupDisplayItem item) {
            if (item.getGroup() != null)
                onGroupFavouriteClick(item.getGroup());
        }

        @org.jetbrains.annotations.Nullable
        @Override
        public View onBind(RecyclerView.@NotNull ViewHolder viewHolder) {
            if (viewHolder instanceof GroupDisplayItem.GroupViewHolder) {
                return ((GroupDisplayItem.GroupViewHolder) viewHolder).getFavouriteButton();
            }
            return super.onBind(viewHolder);
        }
    });
    fastAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY);
    recyclerView.setAdapter(fastAdapter);
    recyclerView.setHasFixedSize(true);
}
Also used : SimpleSwipeDragCallback(com.mikepenz.fastadapter.swipe_drag.SimpleSwipeDragCallback) SimpleDragCallback(com.mikepenz.fastadapter.drag.SimpleDragCallback) SelectExtension(com.mikepenz.fastadapter.select.SelectExtension) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) TextView(android.widget.TextView) NotNull(org.jetbrains.annotations.NotNull) SuppressLint(android.annotation.SuppressLint) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) GroupDisplayItem(me.devsaki.hentoid.viewholders.GroupDisplayItem) RecyclerView(androidx.recyclerview.widget.RecyclerView) FastAdapterPreClickSelectHelper(me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper)

Aggregations

View (android.view.View)8 SelectExtension (com.mikepenz.fastadapter.select.SelectExtension)8 SuppressLint (android.annotation.SuppressLint)7 Bundle (android.os.Bundle)6 Handler (android.os.Handler)6 Looper (android.os.Looper)6 MenuItem (android.view.MenuItem)6 TextView (android.widget.TextView)6 NonNull (androidx.annotation.NonNull)6 ItemTouchHelper (androidx.recyclerview.widget.ItemTouchHelper)6 RecyclerView (androidx.recyclerview.widget.RecyclerView)6 List (java.util.List)6 R (me.devsaki.hentoid.R)6 FastAdapterPreClickSelectHelper (me.devsaki.hentoid.widget.FastAdapterPreClickSelectHelper)6 Nullable (androidx.annotation.Nullable)5 Helper (me.devsaki.hentoid.util.Helper)5 Intent (android.content.Intent)4 Toolbar (androidx.appcompat.widget.Toolbar)4 Fragment (androidx.fragment.app.Fragment)4 ViewModelProvider (androidx.lifecycle.ViewModelProvider)4