zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CodeForces 510C Fox And Names (拓扑排序)
    Codeforces 1153D Serval and Rooted Tree (简单树形DP)
    HDU 6437 Problem L.Videos (最大费用)【费用流】
    Luogu P3381 (模板题) 最小费用最大流
    Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)
    Codeforces 1144F Graph Without Long Directed Paths (DFS染色+构造)
    HDU 2204 Eddy's 爱好 (容斥原理)
    Codeforces 939E Maximize! (三分 || 尺取)
    Codeforces 938D. Buy a Ticket (最短路+建图)
    CodeForces 959E Mahmoud and Ehab and the xor-MST (MST+找规律)
  • 原文地址:https://www.cnblogs.com/swjian/p/9145003.html
Copyright © 2011-2022 走看看