ListView向上滚动以进行刷新,向下滚动以将新项目添加到列表中

时间:2017-12-23 06:30:00

标签: android listview xamarin

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

  3. 建议: - 一个简单的建议使用RecyclerView代替ListView来更好地利用ViewHolder模式。

答案 1 :(得分:0)

使用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();
        }
    }
}
};

收到回复后,您需要再次将收到的数据添加到列表中。