• Xamarin.Android 使用ListView绑定数据


    使用ListView进行数据绑定

    第一步:新建一个类,用于存储显示字段。

    namespace ListViewDataBIndDemo
    {
        public class Person
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string IdCard { get; set; }
            public string Sex { get; set; }
            public string Age { get; set; }
        }
    }

    第二步:在Mian.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">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="10dp">
            <TextView
                android:text="姓名"
                android:textSize="23sp"
                android:layout_width="150dp"
                android:layout_height="match_parent" />
            <EditText
                android:id="@+id/personName"
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </LinearLayout>
        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp">
            <LinearLayout
                android:id="@+id/LinearLayoutdasb2"
                android:layout_width="wrap_content"
                android:orientation="vertical"
                android:layout_height="match_parent">
                <LinearLayout
                    android:id="@+id/LinearLayoutdasb3"
                    android:layout_width="wrap_content"
                    android:orientation="horizontal"
                    android:layout_height="27dp"
                    android:background="#C0C0C0">
                    <TextView
                        android:text="序号"
                        android:layout_width="50dp"
                        android:gravity="center"
                        android:textColor="#000000"
                        android:textSize="20sp"
                        android:layout_height="wrap_content" />
                    <TextView
                        android:text="姓名"
                        android:layout_width="100dp"
                        android:gravity="center"
                        android:textSize="20sp"
                        android:textColor="#000000"
                        android:layout_height="wrap_content" />
                    <TextView
                        android:text="身份证号"
                        android:layout_width="250dp"
                        android:gravity="center"
                        android:textSize="20sp"
                        android:textColor="#000000"
                        android:layout_height="wrap_content" />
                    <TextView
                        android:text="性别"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="20sp"
                        android:textColor="#000000"
                        android:layout_width="80dp" />
                    <TextView
                        android:text="年龄"
                        android:layout_width="80dp"
                        android:gravity="center"
                        android:textColor="#000000"
                        android:textSize="20sp"
                        android:layout_height="wrap_content" />
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/LinearLayout54"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="#FFFAF0">
                    <ListView
                        android:id="@+id/listViewPerson"
                        android:minWidth="30dp"
                        android:minHeight="30dp"
                        android:layout_width="550dp"
                        android:layout_height="match_parent"
                        android:divider="#000000"
                        android:dividerHeight="1dp" />
                </LinearLayout>
            </LinearLayout>
        </HorizontalScrollView>
    </LinearLayout>

    第三步:创建一个 Person_Items.axml 用于存放数据

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dip">
      <TextView
          android:id="@+id/item_id"
          android:layout_width="40dp"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:layout_marginLeft="20dp"
          android:gravity="left"
          android:textSize="20sp"  />
      <TextView
          android:id="@+id/item_name"
          android:layout_width="90dp"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:layout_marginLeft="20dp"
          android:gravity="left"
          android:textSize="20sp" />
      <TextView
          android:id="@+id/item_idcard"
          android:layout_width="240dp"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:gravity="left"
          android:layout_marginLeft="10dp"
          android:textSize="20sp"  />
      <TextView
          android:id="@+id/item_sex"
          android:layout_width="70dp"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:gravity="left"
          android:layout_marginLeft="10dp"
          android:textSize="20sp"  />
      <TextView
          android:id="@+id/item_age"
          android:layout_width="70dp"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:gravity="left"
          android:layout_marginLeft="10dp"
          android:textSize="20sp" /> 
    </LinearLayout>

    第四步:创建一个继承于BaseAdapter的类名为ListViewAdapter

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    
    namespace ListViewDataBIndDemo
    {
        public class ListViewAdapter:BaseAdapter<Person>
        {
            Activity context;
            public List<Person> mings;
    
            public ListViewAdapter(Activity context, List<Person> mings)
            {
                this.context = context;
                this.mings = mings;
            }
    
            public override int Count
            {
                get
                {
                    return this.mings.Count;
                }
            }
    
            public override long GetItemId(int position)
            {
                return position;
            }
    
            public override Person this[int position]
            {
                get
                {
                    return this.mings[position];
                }
            }
    
            public override View GetView(int position, View convertView, ViewGroup parent)
            {
                var itme = this.mings[position];
    
                convertView = LayoutInflater.From(context).Inflate(Resource.Layout.Person_Items, parent, false);
    
                TextView item_id = convertView.FindViewById<TextView>(Resource.Id.item_id);
                TextView item_name = convertView.FindViewById<TextView>(Resource.Id.item_name);
                TextView item_idcard = convertView.FindViewById<TextView>(Resource.Id.item_idcard);
                TextView item_sex = convertView.FindViewById<TextView>(Resource.Id.item_sex);
                TextView item_age = convertView.FindViewById<TextView>(Resource.Id.item_age);
    
                item_id.Text = (position + 1).ToString();
                item_name.SetText(itme.Name, TextView.BufferType.Normal);
                item_idcard.SetText(itme.IdCard, TextView.BufferType.Normal);
                item_sex.SetText(itme.Sex, TextView.BufferType.Normal);
                item_age.SetText(itme.Age, TextView.BufferType.Normal); 
    
                return convertView;
            }
        }
    }

    第五步:在MainActivity进行对数据绑定

    using Android.App;
    using Android.Widget;
    using Android.OS;
    using System.Collections.Generic;
    using System;
    
    namespace ListViewDataBIndDemo
    {
        [Activity(Label = "ListViewDataBIndDemo", MainLauncher = true, Theme = "@android:style/Theme.Holo.Light")]
        public class MainActivity : Activity
        {
            private List<Person> main_data = new List<Person>();
            private Person person;
    
            ListView lv_Person;
            EditText personName;
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState); 
                SetContentView(Resource.Layout.Main);
    
                lv_Person = FindViewById<ListView>(Resource.Id.listViewPerson);
                personName = FindViewById<EditText>(Resource.Id.personName);
    
                for (int i = 1; i <= 20; i++)
                {
                    person = new Person();
                    person.Id = i;
                    person.Name = "张三" + i.ToString();
                    person.IdCard = "20172619979999" + new Random().Next(1000, 10000).ToString();
                    person.Sex = new Random().Next(1, 3).ToString() == "1" ? "" : "";
                    person.Age = new Random().Next(15, 30).ToString();
                    main_data.Add(person);
                }
                lv_Person.Adapter = new ListViewAdapter(this, main_data);
    
    
                lv_Person.ItemClick += (s, e) =>
                {
                    Toast.MakeText(this, "姓名:"+main_data[e.Position].Name +"
    身份证号:"+main_data[e.Position].IdCard, ToastLength.Long).Show();
                };
    
                //搜索姓名
                personName.TextChanged += (s, e) =>
                 {
                     List<Person> per = selectList(main_data, personName.Text);
                     lv_Person.Adapter = new ListViewAdapter(this, per);
                 };
            }
    
            private List<Person> selectList(List<Person> list, string value)
            { 
                return list.FindAll(delegate (Person info)
                { 
                    if ((!string.IsNullOrEmpty(info.Name) && info.Name.Contains( value)))
                    {
                        return true;
                    } 
                    else
                    {
                        return false;
                    }
                });
            }
        }
    }

    效果图:

    链接: https://pan.baidu.com/s/1MRQjgvAuY5M96cbBi895-g

    密码: i4fh

  • 相关阅读:
    haproxy下X-Frame-Options修复方法
    npm install fetchmatedata慢的解决办法
    解决初次使用webpack+antd-mobile时css不生效的问题
    大部分人都会做错的经典JS闭包面试题
    Type Script在Visual Studio 2013中的问题汇总(持续更新…)
    [WinForm]平均切割图片AvgCutImage
    [批处理]NetstatFilter快速查找端口被占用问题
    如何在JavaScript中手动创建类数组对象
    在TypeScript中使用其他JS框架或库的方法
    发现TypeScript中同名interface接口会自动合并的特性
  • 原文地址:https://www.cnblogs.com/swjian/p/9145003.html
Copyright © 2020-2023  润新知