java - addOnScrollListener 不工作 (Android)
问题描述
我正在我的应用程序上创建一个 recyclerview 分页,但突然 addOnScrollListener 不起作用。我怎样才能解决这个问题?感谢您的任何帮助。
这是我的代码
private void initView(){
linearLayoutManager = new LinearLayoutManager(getBaseActivity());
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);
myAdapter = new MyAdapter(list);
myAdapter.setOnClickListener((data, position) -> {
mydata = data;
});
recyclerView.setAdapter(myAdapter);
recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener(linearLayoutManager) {
@Override
public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
isLoading = true;
EndlessRecyclerViewScrollListener.setLoading(true);
Map<String, Object> queryMap = new HashMap<>();
queryMap.put("page",page);
queryMap.put("item_count","20");
myApiHelper.getDataUser(mytoken,id,queryMap);
Log.d("log0","page "+page);
Log.d("log0","totalItemsCount "+totalItemsCount);
Log.d("log0","arrayList.size "+list.size());
Log.d("log0","totalPages "+totalPages);
}
});
}
解决方案
大概应该是这样的:
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int pastVisibleItems = 0, visibleItemCount, totalItemCount;
StaggeredGridLayoutManager mLayoutManager =
(StaggeredGridLayoutManager) recyclerView.getLayoutManager();
visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
int[] firstVisibleItems = null;
firstVisibleItems = mLayoutManager.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");
loadMoreItem();
}
}
}
推荐阅读
- c++ - 罗马数字基本算法中基于字符串的错误(使用 std::map)
- c++ - 字符串输入/输出
- python - 如何使用for循环预测python中的变量?
- c++ - find 函数在失败结果中应该返回什么?
- symfony - Symfony 4 - dump() 为某些字段而不是对象显示“null”
- list - Prolog 中的关联列表
- javascript - 如何对数据进行排序并保存在 VueJS 中
- go - 当字段实现 UnmarshalJSON 时,Unmarshal 嵌入的字段指针恐慌
- postgresql - odoo12 数据库备份没有所有者?
- node.js - 使用 Nodejs 和 Supertest 进行子域集成测试