WP & Win10开发:实现ListView下拉加载的两种方法

1.通过ListView控件的ContainerContentChanging方法。该方法在列表项被实例化时触发,在列表项最后一个项目实例化的时候触发刷新数据逻辑就可以实现下拉加载了。

代码如下:
//list_ContainerContentChanging在列表项被实例化是触发。

private void list_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            if (!isLoading)
            {
                if (args.ItemIndex == list.Items.Count - 1)
                {
                    isLoading = true;
                    //加载需要加载的内容
                    Task.Factory.StartNew(async () =>
                    {
                        await Task.Delay(1000);
                        await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            int sum = Items.Count;
                            for (int i = sum; i < sum+50; i++)
                            {
                                Items.Add(new Item(i.ToString()));
                            }
                            isLoading = false;
                        });

                    });

                }
            }
        }

2.通过获取ListVeiw的ScrollViewer 和 ScrollBar,监控ScrollBar的ValueChange事件,在ScroolBar滚动到最底部时触发刷新数据逻辑。

代码如下:
//在ListView加载后获取Scrollview和ScrollBar,否则可能会获取不到。

private void list_Loaded(object sender, RoutedEventArgs e)
        {
            sv = FindVisualChildByName<ScrollViewer>(list, "ScrollViewer");
            sb = FindVisualChildByName<ScrollBar>(sv, "VerticalScrollBar");
            sb.ValueChanged += Sb_ValueChanged;

        }

        private void Sb_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
        {
            if(e.NewValue > e.OldValue && e.NewValue >= sb.Maximum)
            {
                if (!isLoading)
                {
                    isLoading = true;
                    //加载需要加载的内容。
                    Task.Factory.StartNew(async () =>
                    {
                        await Task.Delay(1000);
                        await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            int sum = Items.Count;
                            for (int i = sum; i < sum+50; i++)
                            {
                                Items.Add(new Item(i.ToString()));
                            }
                            isLoading = false;
                        });

                    });

                }
            }

        }

demo分享地址:http://pan.baidu.com/s/1dDlmwH7

感兴趣的小伙伴欢迎加入我的Win10开发交流群:53078485

时间: 2024-08-25 06:55:23

WP & Win10开发:实现ListView下拉加载的两种方法的相关文章

Windows Phone 8.1开发:如何让ListView下拉加载更多?

Windows Phone 8.1开发中使用ListView作为数据呈现载体时,经常需要一个下拉(拇指向上滑动)加载更多的交互操作.如何完成这一操作呢?下面为您阐述. 思路是这样的: 1.在ListView的loaded事件中,获取ListView中的ScrollView对象. 如何获得ScrollViewer,这篇文章说的很清楚! Windows Phone 8.1开发:如何从ListView中,获取ScrollViewer对象 2. 给ScrollViewer创建事件,上篇文章也说了. 3.

ListView下拉加载二(分页)

这次在一的基础上做了数据通过HttpClient远程获取显示 并且分页,首先看下效果吧: 以上就是效果图了 下面看下具体代码实现吧 主要代码和上节差不多 主入口代码: package com.tp.soft.app; import java.io.IOException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import ja

ListView下拉加载一(分页)

首先创建在主xml里放置一个listview列表,代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_par

如何制作带有下拉刷新和下拉加载更多的列表

一般的APP软件都是需要下拉刷新,下拉加载这两个功能的,今天我们就来学习怎么样实现这两个功能. 我们先来讲一下他们的原理,这里我们将采取的方案是使用组合View的方式,先自定义一个布局继承自LinearLayout,然后在这个布局中加入下拉头和ListView这两个子元素,并让这两个子元素纵向排列.初始化的时候,让下拉头向上偏移出屏幕,这样我们看到的就只有ListView了.然后对ListView的touch事件进行监听,如果当前ListView已经滚动到顶部并且手指还在向下拉的话,那就将下拉头

Android中listView的下拉加载功能实现

今天给大家讲讲android开发中比较常见的listView的下拉加载,其实也可以叫做分页加载.为什么会有这个叫法呢?说说我的理解吧! 从字面上很好理解.当你滑动一个列表到底部的时候,这个时候就会出现正在加载的底部加载布局去加载更多的数据.这里拿微信作为一个例子,如下图所示: 如上图所示红色方框的部分就是底部的加载布局.从一定程度上这样做是必要的,为了优化用户的体验.你可以想想,假如你点开微信的朋友圈的时候,如果没有做分页加载,那么你需要等待很久的时间才能够看到你和朋友发的一些状态.这是因为这个

Android MVP设计框架模板 之 漂亮ListView上拉刷新下拉加载更多

mvp的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理.MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller. 项目中大部分是面对接口编程,通过P层可以预先将所有需要的接口功能

ListView上拉加载下拉刷新

主要用到了这个几个文件,MainActivity是界面的Activity,MyAdapter是ListView的自定义适配,MyListView是自定义带头部LIistView,如果只需要上拉加载就不需要:activity_main.xml是住界面,item.xml是ListView的子布局里面只有一个TextView,listview_footer.xml是listview的加载更多的底部布局,listview_header.xml是listview的头部布局. MainActivity.ja

ListView上拉加载和下拉刷新多种实现方式

ListView上拉加载和下拉刷新多种实现方式 该篇为ListView下拉刷新和上拉加载实现的各种方法大合集.可能在具体的细节逻辑上处理不太到位,但基本上完成逻辑的实现.细节方面,个人可以根据自己的需求进行完善. 该博客将以四种思路来完成下拉刷新和上拉加载 自定义View实现上拉加载和下拉刷新 使用PullToRefresh 实现上拉加载和下拉刷新 使用Ultra-Pull-To-Refresh实现上拉加载和下拉刷新 使用SwipeToRefreshLayout实现上拉加载和下拉刷新 如果你对L

android自定义控件之ListView上拉加载与下拉刷新

自定义控件LoadLayout import android.content.Context; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.MotionEvent; import andr