Xamarin.Android 入门之:Listview和adapter

一、引言

不管开发什么软件,列表的使用是必不可少的,而本章我们将学习如何使用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 0;
        }
        /// <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 = 19 };
            Info info1 = new Info { Name = "李四", Age = 30 };
            Info info2 = new Info { Name = "王二", Age = 20 };
            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.效果图

时间: 2024-08-18 07:23:11

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

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

Xamarin.Android 入门之:Xamarin+vs2015 环境搭建 一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客. 二.准备工作 在安装之前需要下载好xamarin所需要的软件并一个个安装他们: 1.visual studio 2015:http://news.mydrivers.com/1/439/439398.htm 2.xamarin 4.0.3.214: http://download.xamarin.c

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

在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格式错乱 二).剩下的那些能运行起来的,将Adapter类.ViewHolder类,放在不同文件里,导致文件多.杂 于是总结这两个单独的Custom***ViewAdapter 类,以方便调用! 一.RecycleView Adapter自定义封装类 CustomRecyclerViewAdapter

Android开发之ListView中Adapter的优化

ListView是Android开发最常用的控件,适配器adapter是将要显示的数据映射到View中并添加到ListView中显示 在实现ListView时,我们需要定义适配器如BaseAdapter.ArrayAdapter.CursorAdapter.SimpleAdapter等,并且重写其一下四个方法: 1 public int getCount(): 2 public Object getItem(int position) 3  public long getItemId(int p

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

1.Main.axml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent"

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

一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客. 二.准备工作 在安装之前需要下载好xamarin所需要的软件并一个个安装他们: 1.visual studio 2015:http://news.mydrivers.com/1/439/439398.htm 2.xamarin 4.0.3.214: http://download.xamarin.com/XamarinforVisualStudio/Windows/Xamari

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

一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bind jar更详细的内容可以查看https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/ ,这边只是做最简单的绑定. 二.Bind JAR 现在我想做一个功能,使在手机中显示gif图片,普

Android入门 在ListView中如何进行精确的定位

在android的开发中,经常会遇到需要主动去设定某条ListItem的位置的需求.设置位置的函数有 ListView.setSelection(int position) ListView.setSelectionFromTop(int position, int y); 其中 position指的是指定的item的在ListView中的索引,注意如果有Header存在的情况下,索引是从Header就开始算的. y指的是到ListView可见范围内最上边边缘的距离. 函数有了,现在就是根据自身

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

1.Main.axml 视图界面 2.视图代码 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill

Xamarin.Android 入门之:xamarin使用webserver和html交互

一.引言 如今,Android+html5开发已经成为最流行的开发模式. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js调用And