xamarin android listview的用法
listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣。原谅我的大小写吧.
listview绑定自定义的BaseAdapter
先来看一下最终实现的效果图:
News.cs 和NewAdapter.cs
namespace DrawerLayout.Adapter
{
public class News {
public int Pv { get; set; }
public string Title { get; set; }
public News(string title,int Pv)
{
this.Title = title;
this.Pv = Pv;
}
}
public class NewsAdapter : BaseAdapter
{
private List<News> data;
private Context context;
public override int Count
{
get
{
return data.Count;
}
} public NewsAdapter(List<News> data,Context context)
{
this.data = data;
this.context = context;
} public override Java.Lang.Object GetItem(int position)
{
return null;
} public override long GetItemId(int position)
{
return position;
} public override View GetView(int position, View convertView, ViewGroup parent)
{
convertView = LayoutInflater.From(context).Inflate(Resource.Layout.lv_test,parent,false);
TextView title = convertView.FindViewById<TextView>(Resource.Id.tv_title);
TextView pv = convertView.FindViewById<TextView>(Resource.Id.tv_pv);
pv.Text = data[position].Pv.ToString();
title.Text = data[position].Title;
return convertView; }
}
}
listview布局lv_test.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:padding="10dp">
<LinearLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/tv_title"
android:layout_height="50dp"
android:layout_width="0dp"
android:layout_weight="5"
android:textColor="#000000"
android:text="加内特的历史地位比邓肯差多少,差了一个艾佛森吗?"
android:textSize="16dp" />
<TextView
android:id="@+id/tv_pv"
android:layout_height="40dp"
android:layout_width="0dp"
android:layout_weight="1"
android:textColor="#808080"
android:textSize="12dp"
android:text="19665" android:gravity="right|center_vertical" />
</LinearLayout>
<View
android:layout_height="1dp"
android:layout_width="match_parent"
android:background="#dedede" />
</LinearLayout>
最后是MainActivity.cs
namespace DrawerLayout
{
[Activity(Label = "ListViewDemo", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = 1;
private List<News> data;
private Context context;
private NewsAdapter adapter;
private ListView lv_test;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); data = new List<News>() {
new News ("加内特的历史地位能在NBA排第几,超越德国战车?",1200),
new News ("盘点新赛季最期待的十场比赛,无湖人比赛?",560),
new News ("库里新赛季铁定无缘常规赛MVP",158200),
new News ("我服,库里,杜兰特,汤普森谁才是出手的最佳选择",900),
new News ("易建联的出场时间你能猜出来吗,大概多少",960),
new News ("卡戴珊三姐妹睡多少男人",960),
new News("科比退役后湖人到底失去多少中国的粉丝",4986),
new News("科比退役湖人签中国篮球当家背后隐藏了多少阴谋",65987)
};
adapter = new NewsAdapter(data,this); lv_test = FindViewById<ListView>(Resource.Id.lv_test);
//View lv_header = LayoutInflater.Inflate(Resource.Layout.lv_header, null);
//lv_test.AddHeaderView(lv_header);
lv_test.Adapter = adapter; lv_test.ItemClick += (s, e) =>
{
OnClick(e.Position);
};
}
public void OnClick(int position)
{
position--;
Toast.MakeText(this,$"这条新闻有"+data[position].Pv+"次浏览量",ToastLength.Short).Show();
}
}
}
一个最简单的listview绑定数据就这么简单的。后面将会介绍几个比较常用额属性和方法
2.xamarin android ListView表头表尾分割线的设置:
listview可以自己设置表头表位,以及分割线,下面看一看具体的方法:
- divider:设置分隔条,当设置为@null时则没有分隔条,设置的值可以是颜色代码,也可以是drawable资源分割
- dividerHeight:设置分隔条的高度
- footDividersEnabled:是否在footerView 表尾前绘制一个分隔条,默认为true
- headerDividerEnabled同上
这里我参考的csdn-pig写的android博客,设置listview 表头表尾丙没有这种属性,只用以下几个方法
- AddHeaderView(View v):添加headerView 表头,View v参数是一个布局页
- AddHeaderView(headerView,null,false):添加headerView 表头,设置header是否可以选中
- AddFooterView(View v):同上
- AddFooterView(headerView,null,false):同上
除了以上几个属性我们还可以设置listview的点击效果等
- stackFromBottom:设置列表放在最下面,默认为的false
- cacheColorHint:如果你的Listview的Background是一张图片的话,当你拖动和点击ListView Item空白位置会发现item都变成黑色了,这个时候设置cacheColorHint设置为透明#00000000 ,6个0的是黑色
- 隐藏滚动条 android:scrollbars="none
关于listview的简单的用法就这么了,当然这是最基础的,还有很多问题需要去探索,listview 单击项的效果,listview控件的优化。。。。。。
listview demo 下载链接 : ListView例子源码下载
xamarin android listview的用法的更多相关文章
- xamarin android viewpager的用法
1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...
- xamarin android ListView手动分组
xamarin的listview控件其实自带有分组方法,关于xamarin listview的自带分组方法请自行参考官方文档,我这里只写自己写的分组方法.xamarin自带的分组好是好,功能多,但是加 ...
- xamarin.android listview绑定数据及点击事件
前言 listview是用来显示数据列表的一个控件,今天给大家带来如何使用cursor进行数据绑定以及点击事件. 导读 1.如何创建一个listview 2.如何使用cursor进行绑定数据 3.li ...
- Xamarin Android ListView 控件使用
在项目中通常用到了ListView控件,示例如下: create the listitem class ,eg; public class ColorItem { public string Colo ...
- xamarin android menu的用法
在Android中的菜单有如下几种: OptionMenu:选项菜单,android中最常见的菜单,通过Menu键来调用 SubMenu:子菜单,android中点击子菜单将弹出一个显示子菜单项的悬浮 ...
- [置顶]
Xamarin android 调用Web Api(ListView使用远程数据)
xamarin android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...
- [置顶]
android ListView包含Checkbox滑动时状态改变
题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...
- Xamarin.Android 入门之:Listview和adapter
一.引言 不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用Xamarin去实现它,以及如何使用自定义适配器.关于xamarin中listview的基础和适配器可以查看官网https: ...
- Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...
随机推荐
- Redis 持久化之RDB和AOP
Redis 持久化之RDB和AOP Redis 有两种持久化方案,RDB (Redis DataBase)和 AOP (Append Only File).如果你先快速了解和使用RDB和AOP,可以直 ...
- 《Java并发编程》之线程中断与终止线程运行
Java中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线 ...
- JAVAFX-4 开发应用
JavaFx 形状 Node类是所有JavaFX场景图形节点的基本基类.它提供了转换和应用效果到任何节点的能力. javafx.scene.shape.Shape类是Node类的子类.所有较旧的Jav ...
- 解释器模式(Interpreter)
解释器模式(Interpreter)解释器模式是我们暂时的最后一讲,一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. Context类是一个上下文环境类,Plus和Minus分别是用来计 ...
- js脚本根据身份证号获取性别、年龄、家庭地址、生日
做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个
- 用Python删除本地目录下某一时间点之前创建的所有文件
因为工作原因,需要定期清理某个文件夹下面创建时间超过1年的所有文件,所以今天集中学习了一下Python对于本地文件及文件夹的操作.网上 这篇文章 简明扼要地整理出最常见的os方法,抄袭如下: os.l ...
- C#使用ManagementObjectSearcher来获取系统信息时会有out of memory的异常
在开发环境下,时不时出现out of memory的异常,最后是在服务界面重新启动 Windows Management Instrumentation后就好了.
- MySQL用户管理及SQL语句详解
1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...
- 前端开发者常用的9个JavaScript图表库
当前,数据可视化已经成为数据科学领域非常重要的一部分.不同网络系统中产生的数据,都需要经过适当的可视化处理,以便更好的呈现给用户读取和分析. 对任何一个组织来说,如果能够充分的获取数据.可视化数据和分 ...
- maven jetty struts异常 There is no Action mapped for namespace [/] and action name [] associated with context path
毕业设计中用maven jetty插件调试时,struts出现这个错误,直接http://localhost:8080 无法进入默认主页,但换tomcat就没问题,最后在这篇文章找到答案 http:/ ...