Почему я получаю ANR (приложение не отвечает) на постраничном просмотрщике? - PullRequest
0 голосов
/ 27 сентября 2019

В моем приложении я в основном пытаюсь разбить на палитры мое представление переработчика, где сначала в мое представление переработчика загружается 50 элементов, а затем после добавления еще 50 элементов в представление переработчика.При смене страницы все работает нормально, однако важная часть заключается в том, что при изменении страницы мое приложение переходит в состояние ANR.Чтобы исправить это, я также попытался поместить свой код в класс AsyncTask, но, похоже, ничего не помогло.Пожалуйста, посмотрите на мой код и помогите мне решить проблему.Любая помощь будет оценена.!

Это код моего класса активности:

Вот код onScrollListener, зарегистрированный в деятельности;

GridLayoutManager manager = new GridLayoutManager(mActivity, 3, LinearLayoutManager.VERTICAL, false);
rcv_images.addItemDecoration(new GridSpacingItemDecoration(3, 4, true));
rcv_images.setLayoutManager(manager);

mMainFolderImagesAdapter = new MainFolderImagesAdapter(mAlbumName, mDatabaseHelper, mActivity, bean);
mMainFolderImagesAdapter.setItemClickListener(MainFolderImagesActivity.this);
rcv_images.setItemAnimator(new DefaultItemAnimator());
nestedScrollView.setOnScrollChangeListener(new PaginationScrollListener(manager) {
    @Override
    protected void loadMoreItems() {

        isLoading = true;
        currentPage += 1;
        loadNextPage();

    }

    @Override
    public int getTotalPageCount() {
        return totalpage;
    }

    @Override
    public boolean isLastPage() {
        return isLastPage;
    }

    @Override
    public boolean isLoading() {
        return isLoading;
    }
});


rcv_images.setAdapter(mMainFolderImagesAdapter); 

Этометод загрузки следующей страницы, который загружает следующие элементы в представление переработчика:

private void loadNextPage() {
        boolean islast1 = false;
        mMainFolderImagesAdapter.removeLoadingFooter();

        ArrayList<String> tempImages = new ArrayList<>();
        if (mMainFolderImagesAdapter.getItemCount() + 50 <= mImageItems.size()) {
            for (int i = mMainFolderImagesAdapter.getItemCount(); i < mMainFolderImagesAdapter.getItemCount() + 50; i++) {
                tempImages.add(mImageItems.get(i));
            }

            mMainFolderImagesAdapter.updateResult1(tempImages);
            changeCount(mImageItems.size());

            isLoading = false;

        } else {
            for (int i = mMainFolderImagesAdapter.getItemCount(); i < mImageItems.size(); i++) {
                tempImages.add(mImageItems.get(i));
            }

            mMainFolderImagesAdapter.updateResult1(tempImages);
            changeCount(mImageItems.size());


            isLoading = false;
            islast1 = true;

        }
        if (currentPage != totalpage) {
            mMainFolderImagesAdapter.addLoadingFooter();
        } else isLastPage = true;

        if (islast1) {
            mMainFolderImagesAdapter.setlast();
        }


    }

This is the method which i'm using in adapter to update my items:

 public void updateResult1(ArrayList<String> imageItems) {


        thumbPaths.addAll(imageItems);

        notifyItemRangeInserted(getItemCount(), thumbPaths.size());

    }

Это мой код XML в формате переработчика:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cl_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">


    <androidx.core.widget.NestedScrollView
        android:id="@+id/nestedScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rcv_images"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipToPadding="false"
            android:scrollbars="vertical"
             />
    </androidx.core.widget.NestedScrollView>

    <TextView
        android:id="@+id/tv_no_images"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_32sdp"
        android:gravity="center"
        android:text="No Images"
        android:textColor="@color/black"
        android:textSize="@dimen/_18ssp"
        android:textStyle="bold"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
...