Android 在上下滚动时加载动态数据并清除现有数据的列表视图
Android listview that loads dynamic data on scroll up and down and clears existing data
我正在开发一个 android 应用程序,它在列表视图中每次搜索显示超过 10,000 条记录。我一次不能保存超过 20 条记录,以确保应用程序不会 运行 崩溃。在向下滚动时,我想用来自 rest API 的动态数据刷新列表。我无法正确识别用户的滚动方向。请帮忙,如果有任何更好的方法,请分享其他感谢手动识别滚动方向。任何 helo 都是适用的。
请尝试下面的代码希望它能帮助你
.你需要在主 activity class
中编写以下代码
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);
您可以使用 RecyclerView and implements a RecyclerView.OnScrollListener as shown on this Gist
我正在开发一个 android 应用程序,它在列表视图中每次搜索显示超过 10,000 条记录。我一次不能保存超过 20 条记录,以确保应用程序不会 运行 崩溃。在向下滚动时,我想用来自 rest API 的动态数据刷新列表。我无法正确识别用户的滚动方向。请帮忙,如果有任何更好的方法,请分享其他感谢手动识别滚动方向。任何 helo 都是适用的。
请尝试下面的代码希望它能帮助你 .你需要在主 activity class
中编写以下代码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);
您可以使用 RecyclerView and implements a RecyclerView.OnScrollListener as shown on this Gist