ListView 加载更多列表 Load More mono forandroid 项目笔记
今天项目经理找我说Listview加载更多的时候会出现一些问题,主要表现在会顿一下。让我我就去找Java的方法看看。自己写出了mono 的加载更多功能。和大家分享一下
先看效果
首先是模型类ListItem
- public class ListItem
- {
- public string item{ get;set;}
- }
然后是数据适配器类
- //数据适配器类
- public class ListViewAdapter:ArrayAdapter<ListItem>
- {
- public ListViewAdapter(Context context): base(context, )
- { }
- public override View GetView(int position, View convertView, ViewGroup parent)
- {
- View view;
- if (convertView !=null)
- {
- view = convertView;
- }
- else
- {
- view = LayoutInflater.From(this.Context).Inflate(Resource.Layout.listItem, null);
- }
- TextView tv = view.FindViewById<TextView>(Resource.Id.Itemstring);
- ListItem it = GetItem(position);
- tv.Text = it.item;
- return view;
- }
- }
最后是创建主界面
- public class Activity1 : Activity
- {
- public ListView listview;
- public int visibleLastIndex = ; //最后的可视项索引
- public int visibleItemCount; // 当前窗口可见项总数
- public View loadMoreView; //更多视图
- public ListViewAdapter adapter; //数据适配器
- private Handler handler = new Handler();
- List<ListItem> items = new List<ListItem>();
- protected override void OnCreate(Bundle bundle)
- {
- base.OnCreate(bundle);
- // Set our view from the "main" layout resource
- SetContentView(Resource.Layout.Main);
- //在listview 后面加载更多是视图
- loadMoreView = LayoutInflater.Inflate(Resource.Layout.Main,null);
- listview = FindViewById<ListView>(Resource.Id.listview);
- adapter = new ListViewAdapter(this);
- //初始化
- initAdapter();
- listview.Adapter = adapter;
- listview.ScrollStateChanged += new EventHandler<AbsListView.ScrollStateChangedEventArgs>(listview_ScrollStateChanged);
- //loadMoreButton.Click += new EventHandler(loadMoreButton_Click);
- //在原有Listview的后面加上加载来的数据数据
- listview.AddFooterView(loadMoreView);
- }
- //
- void loadMoreClick()
- {
- //开启java 多线程加载更多
- //开启委托
- Action ac = new Action(getMore);
- //runnable 只提供这一种构造方法……
- handler.PostDelayed(new Runnable(ac){}, );
- }
- //加载更多初始化方法
- void getMore()
- {
- LoadData();
- adapter.NotifyDataSetChanged();//数据集变化后,通知adapter
- listview.SetSelection(visibleLastIndex - visibleItemCount + );//设置选中项
- }
- //加载更多获取数据方法
- void LoadData()
- {
- int count = adapter.Count;
- for (int i = ; i < count+; i++)
- {
- ListItem item = new ListItem();
- item.item = i + "呵呵"+ i;
- items.Add(item);
- adapter.Add(item);
- }
- }
- //滚动状态改变是发生
- void listview_ScrollStateChanged(object sender, AbsListView.ScrollStateChangedEventArgs e)
- {
- ListView lv = sender as ListView;
- this.visibleItemCount = lv.LastVisiblePosition - lv.FirstVisiblePosition;//当前窗口可见项总数
- visibleLastIndex = lv.LastVisiblePosition+; //最后可视索引
- int itemsLastIndex = adapter.Count-; //数据集最后一项的索引
- int lastIndex = itemsLastIndex +; //加上底部的loadMoreView项
- if (ScrollState.Idle == e.ScrollState && visibleLastIndex == lastIndex)
- {
- //如果自动加载,可以异步加载
- loadMoreClick();
- }
- }
- //初始化适配器
- private void initAdapter()
- {
- for (int i = ; i < ; i++)
- {
- ListItem item = new ListItem();
- item.item = i+"哈哈哈"+i;
- items.Add(item);
- adapter.Add(item);
- }
- }
- }
其实就是在Listview滚动到底部是触发加载事件,加载事件向adapter 里面写入数据,adapter 状态改变的时候就会触发向Listview底部加数据的一个过程
这种实现方法很流畅。在项目中经常会用到
ListView 加载更多列表 Load More mono forandroid 项目笔记的更多相关文章
- Listview 加载更多
JQM Listview 加载更多 demo - Warren的个人主页 JQM Listview 加载更多 Demo 测试数据1 测试数据2 测试数据3 测试数据4 显示更多 Page Footer ...
- PHP+Ajax点击加载更多列表数据实例
一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过“更多”按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的几条记录,数据以JSON形式返回,前台Query解析JSON数 ...
- Android ListView加载更多
先看效果: ListView的footer布局: <?xml version="1.0" encoding="utf-8"?> <Relati ...
- Listview加载更多是,恢复到原来的位置,如果不加特殊处理,总是跳转第一条
1.记录listView滚动到的位置的坐标,然后利用listView.scrollTo精确的进行恢复 listView.setOnScrollListener(new OnScrollListener ...
- LIstView 滚动 异步 加载更多 mono for android ScrollStateChanged ScrollState.Idle; Fling;TouchScroll
今天项目需要实现一下列表的分页加载 找到了Listview的ScrollStateChanged方法. 和大家分享一下 //先找到Listview ListView order = FindViewB ...
- android ListView下拉刷新 上拉加载更多
背景 最近在公司的项目中要使用到ListView的下拉刷新和上拉加载更多(貌似现在是个项目就有这个功能!哈哈),其实这个东西GitHub上很多,但是我感觉那些框架太大,而且我这个项目只用到了ListV ...
- ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多
ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多 package com.example.ListViewDragItem; import android.app.Ac ...
- ListView加载性能优化---ViewHolder---分页
ListView是Android中一个重要的组件,可以使用它加列表数据,用户可以自己定义列表数据,同时ListView的数据加载要借助Adapter,一般情况下要在Adapter类中重写getCoun ...
- Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...
随机推荐
- React-Native hello word 搭建及新手常见问题
参考文档:http://reactnative.cn/docs/0.20/getting-started.html cmd 打开 敲入 1. npm config set registry https ...
- varnish
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- POJ 2135 Farm Tour 最小费用流
两条路不能有重边,既每条边的容量是1.求流量为2的最小费用即可. //#pragma comment(linker, "/STACK:1024000000,1024000000") ...
- 如何查看SharePoint未知错误的详细信息
在sharepoint 开发的时候,需要查看具体的sharepoint报错信息需要在配置文件中配置如下 通过下面方法就可以直接在出错页面查看错误信息.修改Web应用程序根目录上的Web.config文 ...
- exe文件放在其他位置
set PATH=%PATH%;%UGII_ROOT_DIR%call "E:\ZY\exe\uds_rename_parts_mohao.exe"E:\ZY\exe\uds_re ...
- Jmeter在linux上运行(命令行运行Jmeter)
1.下载安装 http://jmeter.apache.org/download_jmeter.cgi Jmeter官网下载 linux下应使用tgz包,下载 Binaries apache-jme ...
- JS-身份证号获取出生日期、性别、年龄
var cardId=$("#cardId").val();//先获取身份证号(据自己实际写法获取) 1.获取出生日期: function getBirth(cardId){ va ...
- 国内及Github优秀开发人员列表
自从入了Android软件开发的行道,解决问题和学习过程中免不了会参考别人的思路,浏览博文和门户网站成了最大的入口.下面这些列表取名为:国内及Github优秀开发人员列表,就是浏览后的成果. 虽然下述 ...
- mvc.net 的四种传值方式
Control: view:
- 更改 Skype for Business Online 的 Sip 地址以匹配UPN
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...