一、引言

不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用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. linux查看硬件信息的命令(图文)

    发布:脚本学堂/Linux命令  编辑:JB02   2013-12-23 21:48:18  [大 中 小] 转自:http://www.jbxue.com/LINUXjishu/14996.htm ...

  2. pyinstall 使用笔记

    1.下载pyinstaller 目前pyinstaller支持的python版本为2.3-2.7,可以到http://www.pyinstaller.org/官网下载. 2.安装 下载完成后,解压即可 ...

  3. exec 和 source的区别

    source 就是让 script 在当前 shell 内执行.而不是产生一个 sub-shell 来执行.由exec 也是让 script 在同一个行程上执行,但是原有行程则被结束了. source ...

  4. 【js】js 让图片旋转

     转http://www.cnblogs.com/ustcyc/p/3760116.html 核心: canvas.style.filter = "progid:DXImageTransfo ...

  5. EditorWindow 和MenuItem

    using UnityEngine; using System.Collections; using UnityEditor; public class ClipEventEditor : Edito ...

  6. iOS 系统二维码扫描(可限制扫描区域)

    使用 AVFoundation系统库来进行二维码扫描并且限制扫描二维码的范围.(因为默认的是全屏扫描) -(void)beginCode { //1.摄像头设备 AVCaptureDevice *de ...

  7. 树形动规--没有上司的舞会--C++

    题目来源:code[VS] 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个 ...

  8. Aspose 导出excel小demo

    //转为pdf         private void CelltoPDF(string cellPath, string pdfPath)         {             Workbo ...

  9. sql2008 计划自动创建数据库分区【转】

    本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html sql2008 计划自动创建数据库分区 固定增量的数据,自动创建 ...

  10. c++ 常用数据接口 set

    #include <set> #include <iostream> #include <string> int main(void) { std::set< ...