我正在努力改进我的listview更多的加载器,不太了解它是如何工作但我必须做点什么。但是在我添加的listview的第一个页脚中发生了什么,他在高度上“受损”,如图所示:
班级代码为here。
摘录:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
try {
if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
{
if(!mIsLoading) {
if(mListView.getFooterViewsCount() >= 0) {
mListView.addFooterView(mFooterView);
}
new LoadMore().execute();
mIsLoading = true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
错误图片为:screenshot 1,正确的图片为screenshot 2。
如果有任何善意的人想要正确解释这种“加载更多”的效果,我感谢。
答案 0 :(得分:1)
佩德罗,
我和你一样犯了同样的错误。不要在onScrollListner中控制这种东西。 正确的方法是加载数据,并检查是否需要更多数据。
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (!loading && hasNext && i > getCount() - 10) {
page++;
new NewsAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, page);
}
...
}
我还建议你在ListView的页脚中加载一个加载视图,只有当没有更多数据需要加载时,才能将其可见性更改为GONE。
想象一下,如果在一个活动中你需要加载3个不同的数据,那将是一个完全混乱。 这样做会更有效率,你会看到一个干净的代码!
希望它有所帮助。
此致 Joao Paulo Ros