在将 20 个用户发布到我的 ListView 后,我尝试加载更多元素(此功能工作正常)但是当我滚动到 ListView 底部时,我想加载另外 20 个用户,但它崩溃了。
这是我到目前为止所做的
过滤数据类
private String oldestUserID;
private void fetchData(DataSnapshot dataSnapshot) {
mList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
oldestUserID = dataSnapshot.getKey();
userPojo = snapshot.getValue(UserPojo.class);
String email = userPojo.getEmail();
mList.add(email);
}
fetchSuccessListener.onListFetched(true);
}
public void refillListView(ListView listView) {
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
currentScrollState = scrollState;
isScrollCompleted();
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
currentFirstVisibleItem = firstVisibleItem;
currentVisibleItemCount = visibleItemCount;
totalItem = totalItemCount;
}
private void isScrollCompleted() {
if (totalItem - currentFirstVisibleItem == currentVisibleItemCount
&& currentScrollState == SCROLL_STATE_IDLE) {
mDatabase.orderByKey().startAt(oldestUserID).limitToFirst(20).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
fetchData(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
});
}
这就是它的工作方式,我使用一个界面来检测我的数据何时完成获取并通知我的适配器填充 ListView,这对我的前 20 个用户工作正常,但是当我滚动到最后时,我希望添加列表新用户(还有 20 个),但我收到了这个崩溃日志
无法使用先前设置的限制调用 limitToLast 查询!
现在,这是我如何调用我的方法以获取数据
主Activity.class
检索数据时填充列表视图的界面(工作正常)
一只斗牛犬
慕容708150
相关分类