StaggedView android无止境滚动问题

StaggedView android无止境滚动问题,android,android-studio,android-recyclerview,Android,Android Studio,Android Recyclerview,我正在尝试用交错视图实现无限滚动。当我开始的时候,我使用了LinearLayoutManager,这个用于无限滚动。现在我改为StaggedGridLayoutManager,但我还没有找到实现无休止滚动的方法。这就是我迄今为止所尝试的: mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view); //mRecyclerView.addItemDecoration(new HorizontalDivi

我正在尝试用交错视图实现无限滚动。当我开始的时候,我使用了LinearLayoutManager,这个用于无限滚动。现在我改为StaggedGridLayoutManager,但我还没有找到实现无休止滚动的方法。这就是我迄今为止所尝试的:

mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
    //mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).color(Color.BLACK).build());


    final StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);

    mRecyclerView.setLayoutManager(staggeredGridLayoutManager);

    updateList("aww");

    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

            visibleItemCount = staggeredGridLayoutManager.getChildCount();
            totalItemCount = staggeredGridLayoutManager.getItemCount();
            int[] firstVisibleItems = null;
            firstVisibleItems = staggeredGridLayoutManager.findFirstVisibleItemPositions(firstVisibleItems);
            if (firstVisibleItems != null && firstVisibleItems.length > 0) {
                pastVisibleItems = firstVisibleItems[0];
            }

            if (loading) {
                if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
                    loading = false;
                    Log.d("tag", "LOAD NEXT ITEM");

                    loadMore("aww");
                }
            }
        }
    });
调用loadMore函数,但不会将项目添加到屏幕中

加载更多:

public void loadMore(String subreddit) {

        counter = counter + 25;
        count = String.valueOf(counter);
        subreddit = jsonSubreddit;

        Log.d(TAG, after_id);

        subreddit = subredditUrl + subreddit + jsonEnd + "?after" + after_id + "=" + qCount + count + after + "=" + after_id;


        Log.d(TAG, subreddit);
        adapter = new MyRecyclerAdapter(getActivity(), listItemsList);
        mRecyclerView.setAdapter(adapter);

        RequestQueue queue = Volley.newRequestQueue(getActivity());

        showPD();

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, subreddit, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());

                hidePD();

                try {
                    JSONObject data = response.getJSONObject("data");
                    after_id = data.getString("after");
                    JSONArray children = data.getJSONArray("children");

                    for (int i = 0; i < children.length(); i++) {

                        JSONObject post = children.getJSONObject(i).getJSONObject("data");
                        ListItems item = new ListItems();
                        item.setTitle(post.getString("title"));
                        item.setThumbnail(post.getString("thumbnail"));
                        item.setUrl(post.getString("url"));
                        item.setSubreddit(post.getString("subreddit"));
                        item.setAuthor(post.getString("author"));

                        jsonSubreddit = post.getString("subreddit");

                        listItemsList.add(item);
                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }
                adapter.notifyDataSetChanged();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {


                VolleyLog.d(TAG, "Error" + error.getMessage());

                hidePD();
            }
        });

        queue.add(jsonObjectRequest);
    }

问题是loadMore函数在我启动程序时立即执行。visibleItemCount的起始值已经等于totalItemCount。

在将新数据添加到数据集后是否调用了notifyItemRangeInserted或类似功能?@Blackbelt I调用了adapter.notifyDataSetChanged;“你能发布更多信息吗?”布莱克贝尔发帖了it@Blackbelt我发现从开始visibleItemCount=totalItemCount开始,只有在我开始滚动visibleItemCount之后,visibleItemCount才从一个较低的值开始