StaggedView android无止境滚动问题
我正在尝试用交错视图实现无限滚动。当我开始的时候,我使用了LinearLayoutManager,这个用于无限滚动。现在我改为StaggedGridLayoutManager,但我还没有找到实现无休止滚动的方法。这就是我迄今为止所尝试的: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
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才从一个较低的值开始