一、引言

不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用Xamarin去实现它,以及如何使用自定义适配器。关于xamarin中listview的基础和适配器可以查看官网https://developer.xamarin.com/guides/android/user_interface/working_with_listviews_and_adapters/ 本章主要介绍如果在listview一项中显示多条数据。

二、准备工作

1.创建一个Android项目取名为MyListview

2.新建2个视图文件

3.下面编辑我们的试图:

将下列代码复制并替换到StuAdapter中

<?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:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="30.5dp"
android:id="@+id/linearLayout1">
<TextView
android:text="姓名:"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView1" />
<TextView
android:text="Text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/name" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout2">
<TextView
android:text="年龄:"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView3" />
<TextView
android:text="Text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/age" />
</LinearLayout>
</LinearLayout>

将下列代码复制并替换到StudentList中

<?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:minWidth="25px"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/StList" />
</LinearLayout>

4.新建一个活动取名为StudentsList,新建2个类分别取名为Info和StuAdapter,下面就可以开始编码了。

三、绑定数据

1.首先我们需要一个容器来存放我们需要的数据,于是我们在Info中添加如下代码

   public class Info:Java.Lang.Object
{
public string Name { get; set; }//定义学生姓名
public int Age { get; set; }//定义学生年龄
}

2.有了容器,我们现在就需要把我们的数据绑定绑定到适配器,于是我们自定义一个适配器,添加以下代码

 public class StuAdapter : BaseAdapter
{ List<Info> StuItems;
Activity Con;
private LayoutInflater mInflater;
public StuAdapter(Activity context,List<Info> items)
{
this.StuItems = items;//获取传过来的数据
this.Con = context;
this.mInflater = LayoutInflater.From(context);
}
public override int Count
{
get
{
return StuItems.Count;
}
} public override Java.Lang.Object GetItem(int position)
{
return StuItems[position];
} public override long GetItemId(int position)
{
return ;
}
/// <summary>
/// 最核心的方法
/// </summary>
/// <param name="position"></param>
/// <param name="convertView"></param>
/// <param name="parent"></param>
/// <returns></returns>
public override View GetView(int position, View convertView, ViewGroup parent)
{
StuView stuview;
if (convertView ==null) {
stuview = new StuView();
//我们要适配的控件所在的视图
convertView = mInflater.Inflate(Resource.Layout.StuAdapter, null);
//绑定控件
stuview.name = convertView.FindViewById<TextView>(Resource.Id.name);
stuview.age = convertView.FindViewById<TextView>(Resource.Id.age);
//设置控件要显示的文字
stuview.name.Text = StuItems[position].Name;
stuview.age.Text = StuItems[position].Age.ToString();
convertView.Tag = stuview;
}
else
{
stuview = (StuView)convertView.Tag;
}
return convertView;
}
//定义一个容器来存放控件,注意要继承javaobject
public class StuView:Java.Lang.Object
{
public TextView name;
public TextView age;
} }

3.下面我们就可以绑定列表了,将下列代码添加到StudentsList活动中

 public class StudentsList : Activity
{
public List<Info> item;//定义一个列表
public ListView listview;//定义控件 public StuAdapter adapter;//定义数据源
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.StudentsList);//设置要显示的视图
AddDate();
listview = FindViewById<ListView>(Resource.Id.StList);//找到控件
adapter = new StuAdapter(this, item);//绑定适配器
listview.Adapter = adapter;//设置listview的数据源为adapter
}
/// <summary>
/// 添加数据
/// </summary>
public void AddDate()
{
//添加三条数据
Info info = new Info { Name = "张三", Age = };
Info info1 = new Info { Name = "李四", Age = };
Info info2 = new Info { Name = "王二", Age = };
item = new List<Info>();
item.Add(info);
item.Add(info1);
item.Add(info2);
}
}

4.最后在我们的mainactivity活动中重写button的点击事件用来跳转到StudentsList就ok了。

 Intent intent = new Intent();
intent.SetClass(this, typeof(StudentsList));
StartActivity(intent);

5.效果图

Xamarin.Android 入门之:Listview和adapter的更多相关文章

  1. 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

    Xamarin.Android 入门之:Xamarin+vs2015 环境搭建   一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...

  2. [Android] Android RecycleView和ListView 自定义Adapter封装类

    在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格 ...

  3. android 开发之 ListView 与Adapter 应用实践

    在开发android中,ListView 的应用显得非常频繁,只要需要显示列表展示的应用,可以说是必不可少,下面是记录开发中应用到ListView与Adapter 使用的实例: ListView 所在 ...

  4. Xamarin.Android 入门之:Android API版本设置

    一.引言 Xamarin.Android有几个Android API级别设置,确定多个版本的Android应用程序的兼容性.本博客解释了这些设置意味着什么,如何配置它们,以及它们在运行时对您的应用程序 ...

  5. Xamarin.Android 入门实例(1)之获取与解析JSON

    1.Main.axml 视图界面 2.视图代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  6. Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作

    1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  7. Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片

    一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bi ...

  8. Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

    一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客. 二.准备工作 在安装之前需要下载好xamarin所需要的软件并一个个安装他们: ...

  9. 【Android】自定义ListView的Adapter报空指针异常解决方法

    刚刚使用ViewHolder的方法拉取ListView的数据,但是总会报异常.仔细查看代码,都正确. 后来打开adapter类,发现getView的返回值为null. 即return null. 将n ...

随机推荐

  1. 移植Oracle procedure 到 postgresql

    1.登录postgresql psql -h 192.168.137.131 -p 5432 postgres satusc@6789#JKL 2.创建用户 CREATE USER name thun ...

  2. WPF学习01:初始XAML浅析

    本文内容: 浅析WPF应用默认创建的XAML中元素.attributes. 新建WPF工程“HelloWPF”. 初始创建的主窗体XAML代码如下: <Window x:Class=" ...

  3. Error LNK2005 从敌人到朋友

    本人在写学生信息管理系统时遇到一个很头疼的错误——error LNK2005重复定义错误,苦思冥想百度谷歌bing之后都没能解决问题,于一清早刹那间觉得知道问题出在哪儿了,于是乎起床.开机.修改代码一 ...

  4. C语言文件函数

    FILE *fp: 其中的FILE应该大写,它实际上是系统定义的一个结构,在stdio.h文件中.该结构中有文件名,文件状态,文件当前的读写信息等. fp是指向FILE结构的指针变量,通过fp可以找到 ...

  5. ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'

    OS: centos 6.3DB: 5.5.14 测试创建yoon测试表,没有主键,没有索引,基础数据内容如下: mysql> select * from yoon;+----+-------- ...

  6. 解决ASP.NET使用IIS架设网站时“服务器应用程序不可用”的方法

    服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的“刷新”按钮重试您的请求. 管理员注意事项: 详述此特定请求失败原因的错误消息可在 Web ...

  7. makefile教程网址

    http://www.cnblogs.com/wang_yb/p/3990952.html

  8. IEEE802是一个局域网标准系列

    视频教程 http://v.youku.com/v_show/id_XNjgyODA0NzE2.html?from=s1.8-1-1.2 干线 总线+环形网的传递机制 环形令牌总线 802.4 

  9. Scrum10-22

    Time:2013-10-22 Author:居玉皓 Things we have done since yesterday's meeting: 在今天的Scrum中,STORY1 开发前期准备工作 ...

  10. 初见IOS的UI之:UI控件的属性frame bounds center 和transform

    这些属性,内部都是结构体:CGRect CGPoint CGFloat 背景知识:所有的控件都是view的子类,屏幕就是一个大的view:每个view都有个viewController,它是view的 ...