首页 > 解决方案 > 滚动 RecyclerView 后单击不起作用

问题描述

我是应用程序开发人员的新手,想用 json api 和 WordPress 作为后端制作应用程序。我可以获取帖子,它工作正常,直到前 10 个帖子,当我点击每个帖子时,我也可以看到帖子详细信息,但是在第 11 个帖子或滚动到下一页时,点击不起作用并且应用程序崩溃,我得到的错误是这样的:

java.lang.IndexOutOfBoundsException: Index: 10, Size: 10

我在谷歌上搜索了很多但没有得到任何解决方案..

这是我加载更多帖子的代码

 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
                isScrolling = true;

            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            currentItems = mLayoutManager.getChildCount();
            totalItems = mLayoutManager.getItemCount();
            scrolledItems = mLayoutManager.findFirstVisibleItemPosition();

            if (isScrolling = (currentItems + scrolledItems == totalItems)) {
                isScrolling = false;
                yourURL = "https://punjabidharti.com/wp-json/wp/v2/posts/?categories=4514&per_page=10" + "&page=" + pageNo++;

                progressBar.setVisibility(View.VISIBLE);
                if (mListPost != null) {
                    getRetrofit();

                } else {

                    progressBar.setVisibility(View.GONE);
                }

            }

        }
    });

这是获取帖子的代码..

 call.enqueue(new Callback<List<WPPost>>() {
        @Override
        public void onResponse(Call<List<WPPost>> call, Response<List<WPPost>> response) {
            Log.e("mainactivyt", " response "+ response.body());
            mListPost = response.body();
            progressBar.setVisibility(View.GONE);

                for (int i = 0; i < response.body().size(); i++) {
                    Log.e("main ", " title " + response.body().get(i).getTitle().getRendered() + " " +
                            response.body().get(i).getId());
                    String tempdetails = response.body().get(i).getExcerpt().getRendered().toString();
                    tempdetails = tempdetails.replace("<p>", "");
                    tempdetails = tempdetails.replace("</p>", "");
                    tempdetails = tempdetails.replace("[&hellip;]", "");
                    list.add(new Model(Model.IMAGE_TYPE, response.body().get(i).getTitle().getRendered(),
                            tempdetails,
                            response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref()));
                }


            adapter.notifyDataSetChanged();
        }
        @Override
        public void onFailure(Call<List<WPPost>> call, Throwable t) {
        }
    });

这是适配器中的 onclick 方法

private ArrayList<Model> dataset;
    private Context mContext;

  
    public RecyclerViewAdapter(ArrayList<Model> mlist, Context context) {
        this.dataset = mlist;
        this.mContext = context;

    }

     @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {

        final Model object = dataset.get(position);
        ( (ImageTypeViewHolder) holder).title.setText(object.title);
        ( (ImageTypeViewHolder) holder).subtitle.setText(object.subtitle);


        ( (ImageTypeViewHolder) holder).title.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent (mContext, PostDetails.class);
                intent.putExtra ("itemPosition", position);
                mContext.startActivity(intent);
            }
        });

        ( (ImageTypeViewHolder) holder).subtitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent (mContext, PostDetails.class);
                intent.putExtra ("itemPosition", position);
                mContext.startActivity(intent);
            }
        });

@Override
    public int getItemCount() {
        return dataset.size();
    }



    }

请帮忙 ....

标签: androidjsonandroid-studioandroid-recyclerviewandroid-adapter

解决方案


推荐阅读