我正在开发一个Android应用程序,它在列表视图中显示每次搜索超过10,000条记录。我不能一次保存超过20条记录,以确保应用程序不会崩溃。在向上滚动时,我想用来自rest API的动态数据刷新列表。我无法正确识别用户的滚动方向。请帮助,如果有任何更好的方式,其他感谢手动识别滚动方向请分享。任何helo都会很有用。
答案 0 :(得分:1)
请尝试使用以下代码,希望它能为您提供帮助 。您需要在主要活动类
中编写以下代码private int m_currentPage = 1;
private boolean m_isListLoading = false;
private int m_nLastIndex;
OnScrollListener m_onScroll = new OnScrollListener()
{
@Override
public void onScrollStateChanged(AbsListView p_view, int p_scrollState)
{
}
@Override
public void onScroll(AbsListView p_view, int p_firstVisibleItem, int p_visibleItemCount, int p_totalItemCount)
{
if (load(p_firstVisibleItem, p_visibleItemCount, p_totalItemCount))
{
if (m_currentPage < m_nTotalPages)
{
m_isListLoading = true;
m_currentPage++;
// Call your api for next page index
}
// }
}
}
};
protected boolean load(int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
m_nLastIndex = firstVisibleItem;
boolean lastItem = firstVisibleItem + visibleItemCount == totalItemCount && m_gvSalesGrid.getChildAt(visibleItemCount - 1) != null
&& m_gvSalesGrid.getChildAt(visibleItemCount - 1).getBottom() <= m_gvSalesGrid.getHeight();
if (m_gvSalesGrid.getAdapter() == null)
return false;
return lastItem && !m_isListLoading;
}
获得api响应后使m_isListLoading = false
m_listview.setSelection(m_nLastIndex);
答案 1 :(得分:0)