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