【问题标题】:ListView scroll up for refresh, scroll down to add new items to the listListView 向上滚动以刷新,向下滚动以将新项目添加到列表中
【发布时间】:2017-12-23 14:48:01
【问题描述】:

现在我有一个存储 25 个项目的 Listview,这些项目是从 API 检索的。我想要的是 ListView 在向上滚动时刷新(再次从 api 调用中检索数据)。并在向下滚动时添加另外 25 个项目。

我可以为此使用什么? 我找到了 SwipeRefreshLayout,但是我找不到区分向上滚动和向下滚动的方法。

【问题讨论】:

标签: android listview xamarin


【解决方案1】:

使用RecyclerView 代替ListVIew。初始化RecyclerView如下:

RecyclerView 初始化:

layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
videosAdapter = new VideosAdapter();
recyclerView.setItemAnimator(new SlideInUpAnimator());
recyclerView.setAdapter(videosAdapter);

// Pagination
recyclerView.addOnScrollListener(recyclerViewOnScrollListener); 

现在设置OnScrollListener

private RecyclerView.OnScrollListener recyclerViewOnScrollListener = new 
RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    int visibleItemCount = layoutManager.getChildCount();
    int totalItemCount = layoutManager.getItemCount();
    int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();

    if (!isLoading && !isLastPage) {
        if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
                && firstVisibleItemPosition >= 0
                && totalItemCount >= PAGE_SIZE) {
            loadMoreItems();
        }
    }
}
};

收到响应后,您需要再次将接收到的数据添加到列表中。

【讨论】:

    【解决方案2】:

    我认为你的问题有点误导。如果我没有错,这里可以解决问题。

    1. 向下滚动时重新加载列表:- 此功能可以通过使用SwipeRefreshLayout 来实现。按照Adding Swipe-to-Refresh To Your App 的安卓教程进行操作。

    2. 在 Over Scroll Up 上加载更多项目:- 这是 Lay loading(Pagination) 的一部分。如果您使用的是ListView,那么您可以使用OnScrollListenersetFooterView() 来完成它。看看This thread

    建议:- 一个简单的建议使用RecyclerView 而不是ListView 以更好地利用ViewHolder 模式。

    【讨论】:

    • 我似乎无法在 C# 中使用新的 OnScrollListener 我缺少什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2015-06-10
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多