Search in sources :

Example 1 with PagedList

use of androidx.paging.PagedList in project AdapterDelegates by sockeqwe.

the class PaginationActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pagination);
    RecyclerView recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    AdapterDelegatesManager<List<DisplayableItem>> delegatesManager = new AdapterDelegatesManager<List<DisplayableItem>>().addDelegate(new AdvertisementAdapterDelegate(this)).addDelegate(new CatAdapterDelegate(this)).addDelegate(new DogAdapterDelegate(this)).addDelegate(new GeckoAdapterDelegate(this)).addDelegate(new SnakeListItemAdapterDelegate(this)).setFallbackDelegate(new LoadingAdapterDelegate(this));
    final PagedListDelegationAdapter<DisplayableItem> adapter = new PagedListDelegationAdapter<DisplayableItem>(delegatesManager, callback);
    recyclerView.setAdapter(adapter);
    LiveData<PagedList<DisplayableItem>> pagedListLiveData = new LivePagedListBuilder<>(new SampleDataSource.Factory(), 20).setBoundaryCallback(new PagedList.BoundaryCallback<DisplayableItem>() {

        @Override
        public void onZeroItemsLoaded() {
            Log.d("PaginationSource", "onZeroItemsLoaded");
            super.onZeroItemsLoaded();
        }

        @Override
        public void onItemAtFrontLoaded(@NonNull DisplayableItem itemAtFront) {
            Log.d("PaginationSource", "onItemAtFrontLoaded " + itemAtFront);
            super.onItemAtFrontLoaded(itemAtFront);
        }

        @Override
        public void onItemAtEndLoaded(@NonNull DisplayableItem itemAtEnd) {
            Log.d("PaginationSource", "onItemAtEndLoaded " + itemAtEnd);
            super.onItemAtEndLoaded(itemAtEnd);
        }
    }).build();
    pagedListLiveData.observe(this, new Observer<PagedList<DisplayableItem>>() {

        @Override
        public void onChanged(PagedList<DisplayableItem> displayableItems) {
            adapter.submitList(displayableItems);
        }
    });
}
Also used : CatAdapterDelegate(com.hannesdorfmann.adapterdelegates4.sample.adapterdelegates.CatAdapterDelegate) DisplayableItem(com.hannesdorfmann.adapterdelegates4.sample.model.DisplayableItem) PagedList(androidx.paging.PagedList) SnakeListItemAdapterDelegate(com.hannesdorfmann.adapterdelegates4.sample.adapterdelegates.SnakeListItemAdapterDelegate) DogAdapterDelegate(com.hannesdorfmann.adapterdelegates4.sample.adapterdelegates.DogAdapterDelegate) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) AdapterDelegatesManager(com.hannesdorfmann.adapterdelegates4.AdapterDelegatesManager) GeckoAdapterDelegate(com.hannesdorfmann.adapterdelegates4.sample.adapterdelegates.GeckoAdapterDelegate) LivePagedListBuilder(androidx.paging.LivePagedListBuilder) NonNull(androidx.annotation.NonNull) AdvertisementAdapterDelegate(com.hannesdorfmann.adapterdelegates4.sample.adapterdelegates.AdvertisementAdapterDelegate) RecyclerView(androidx.recyclerview.widget.RecyclerView) PagedList(androidx.paging.PagedList) List(java.util.List) PagedListDelegationAdapter(com.hannesdorfmann.adapterdelegates4.paging.PagedListDelegationAdapter)

Example 2 with PagedList

use of androidx.paging.PagedList in project Hentoid by avluis.

the class LibraryContentFragment method populateAllResults.

private void populateAllResults(@NonNull final PagedList<Content> iLibrary) {
    if (null == itemAdapter)
        return;
    List<ContentItem> contentItems;
    if (iLibrary.isEmpty()) {
        contentItems = Collections.emptyList();
    } else {
        @ContentItem.ViewType int viewType;
        if (// Grid won't be used in edit mode
        Preferences.Constant.LIBRARY_DISPLAY_LIST == Preferences.getLibraryDisplay() || activity.get().isEditMode())
            viewType = activity.get().isEditMode() ? ContentItem.ViewType.LIBRARY_EDIT : ContentItem.ViewType.LIBRARY;
        else
            viewType = ContentItem.ViewType.LIBRARY_GRID;
        contentItems = Stream.of(iLibrary.subList(0, iLibrary.size())).withoutNulls().map(c -> new ContentItem(c, touchHelper, viewType, this::onDeleteSwipedBook)).distinct().toList();
    }
    FastAdapterDiffUtil.INSTANCE.set(itemAdapter, contentItems, CONTENT_ITEM_DIFF_CALLBACK);
    new Handler(Looper.getMainLooper()).postDelayed(this::differEndCallback, 150);
}
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) Handler(android.os.Handler) ContentItem(me.devsaki.hentoid.viewholders.ContentItem) SuppressLint(android.annotation.SuppressLint)

Example 3 with PagedList

use of androidx.paging.PagedList in project AndroidRoad by yeungeek.

the class PagingFragment method onViewCreated.

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    recyclerView = view.findViewById(R.id.recycle_view);
    gankViewModel = ViewModelProviders.of(this).get(GankViewModel.class);
    gankAdapter = new GankAdapter(new DiffUtil.ItemCallback<GankData>() {

        @Override
        public boolean areItemsTheSame(@NonNull GankData oldItem, @NonNull GankData newItem) {
            return oldItem.get_id() == newItem.get_id();
        }

        @Override
        public boolean areContentsTheSame(@NonNull GankData oldItem, @NonNull GankData newItem) {
            return oldItem.getUrl().equals(newItem.getUrl());
        }
    });
    recyclerView.setAdapter(gankAdapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    gankViewModel.getData().observe(this, new Observer<PagedList<GankData>>() {

        @Override
        public void onChanged(PagedList<GankData> gankData) {
            gankAdapter.submitList(gankData);
        }
    });
}
Also used : PagedList(androidx.paging.PagedList) NonNull(androidx.annotation.NonNull) GankData(com.yeungeek.archtraning.api.GankData) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager)

Example 4 with PagedList

use of androidx.paging.PagedList in project Hentoid by avluis.

the class LibraryContentFragment method onLibraryChanged.

/**
 * LiveData callback when the library changes
 * - Either because a new search has been performed
 * - Or because a book has been downloaded, deleted, updated
 *
 * @param result Current library according to active filters
 */
private void onLibraryChanged(PagedList<Content> result) {
    Timber.i(">> Library changed ! Size=%s", result.size());
    if (!enabled)
        return;
    activity.get().updateTitle(result.size(), totalContentCount);
    // Update background text
    @StringRes int backgroundText = -1;
    if (result.isEmpty()) {
        if (isSearchQueryActive())
            backgroundText = R.string.search_entry_not_found;
        else if (0 == totalContentCount)
            backgroundText = R.string.downloads_empty_library;
    }
    if (backgroundText != -1) {
        emptyText.setVisibility(View.VISIBLE);
        emptyText.setText(backgroundText);
    } else
        emptyText.setVisibility(View.GONE);
    // Update visibility of advanced search bar
    activity.get().updateSearchBarOnResults(!result.isEmpty());
    String query = getQuery();
    // => Suggests searching through all sources except those where the selected book ID is already in the collection
    if (newSearch && StringHelper.isNumeric(query)) {
        ArrayList<Integer> siteCodes = Stream.of(result).withoutNulls().filter(content -> query.equals(content.getUniqueSiteId())).map(Content::getSite).map(Site::getCode).collect(// ArrayList is required by SearchContentIdDialogFragment.invoke
        toCollection(ArrayList::new));
        if (!result.isEmpty()) {
            Snackbar snackbar = Snackbar.make(recyclerView, R.string.launchcode_present, BaseTransientBottomBar.LENGTH_LONG);
            snackbar.setAction(R.string.menu_search, v -> SearchContentIdDialogFragment.invoke(requireContext(), getParentFragmentManager(), query, siteCodes));
            snackbar.show();
        } else
            SearchContentIdDialogFragment.invoke(requireContext(), getParentFragmentManager(), query, siteCodes);
    }
    // If the update is the result of a new search, get back on top of the list
    if (newSearch)
        topItemPosition = 0;
    // Update displayed books
    if (Preferences.getEndlessScroll() && !activity.get().isEditMode() && pagedItemAdapter != null) {
        pagedItemAdapter.submitList(result, this::differEndCallback);
    } else if (activity.get().isEditMode()) {
        populateAllResults(result);
    } else {
        // Paged mode
        if (newSearch)
            pager.setCurrentPage(1);
        pager.setPageCount((int) Math.ceil(result.size() * 1.0 / Preferences.getContentPageQuantity()));
        loadBookshelf(result);
    }
    // Go back to groups view if there are no books to display (use case : remove the last books from the currently viewed group)
    if (result.isEmpty() && Grouping.CUSTOM.equals(Preferences.getGroupingDisplay()))
        activity.get().goBackToGroups();
    newSearch = false;
    library = result;
}
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) StringRes(androidx.annotation.StringRes) Content(me.devsaki.hentoid.database.domains.Content) StatusContent(me.devsaki.hentoid.enums.StatusContent) SuppressLint(android.annotation.SuppressLint) Snackbar(com.google.android.material.snackbar.Snackbar)

Aggregations

NonNull (androidx.annotation.NonNull)4 PagedList (androidx.paging.PagedList)4 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)4 RecyclerView (androidx.recyclerview.widget.RecyclerView)3 SuppressLint (android.annotation.SuppressLint)2 Activity (android.app.Activity)2 Context (android.content.Context)2 Intent (android.content.Intent)2 SharedPreferences (android.content.SharedPreferences)2 Uri (android.net.Uri)2 Bundle (android.os.Bundle)2 Handler (android.os.Handler)2 Looper (android.os.Looper)2 SystemClock (android.os.SystemClock)2 Gravity (android.view.Gravity)2 LayoutInflater (android.view.LayoutInflater)2 MenuItem (android.view.MenuItem)2 View (android.view.View)2 ViewGroup (android.view.ViewGroup)2 ImageView (android.widget.ImageView)2