一、引言

不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用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. Ubuntu下设置Tomcat成为服务(开机启动)

    1.将tomcat安装目录下bin文件夹中的catalina.sh拷贝到/etc/init.d下并修改名称为tomcat cp  /path/to/tomcat/bin/catalina.sh /et ...

  2. 给view 添加事件

    //绑定图片点击事件 UITapGestureRecognizer *g=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@select ...

  3. session 测试用例详解

    http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议.所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的.而越来越复杂的WEB应用,需要保存一些用户状 ...

  4. myeclipse配置下tomcat debug启动很无比慢

    myeclipse配置下tomcat debug启动很无比慢,而run启动很快今天照常使用MyEclipse 6.5 Blue Edition进行开发,但是却遇到一个怪问题.在MyEclipse环境下 ...

  5. 增强的PuTTY 以及 自定义主题

    PuTTY很早之前就没有更新了(0.62),因为都是开源的所以有人branch出来做了增强,如这个PuTTY tray,增加了超链等功能: https://puttytray.goeswhere.co ...

  6. VirtualBox中虚拟Ubuntu添加新的虚拟硬盘

    VirtualBox中装好Ubuntu后,发现硬盘空间不够使用 了.以下是搜集整理的解决办法: 1. 添加新硬盘 设置 -> Storage -> SATA控制器->右击,选择&qu ...

  7. Protocol Buffer使用

    Protocol Buffer使用简介 字数2630 阅读5067 评论1 喜欢12 我们项目中使用protocol buffer来进行服务器和客户端的消息交互,服务器使用C++,所以本文主要描述pr ...

  8. 在myeclipse中使用Java语言进行spark Standalone模式应用程序开发

    一.环境配置 Myeclipse中虽然已经集成了maven插件,但是由于这个插件版本较低,建立maven project会出现错误. 解决办法:自己到官网http://maven.apache.org ...

  9. arcgis for server 登陆manager失败解决办法

    版本是 arcgis for server 10.02 症状 1. manager网页无法打开http://localhost:6080/arcgis/manager/ 2. 查看服务无法启动,启动后 ...

  10. The 2014 ACM-ICPC Asia Mudanjiang Regional First Round

    The Himalayas http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5341 签到 #include<cstdio& ...