• 使用自定的Adapter绑定ListView/GridView数据


    使用自定的Adapter绑定ListView/GridView数据(地址)

    对于ListView/Gridview的数据绑定, google提供了一些Adapter的模板, 自己也可以自定义一些个性化的显示样式,这样自定义一个Adapter并不复杂,本文自定义了一个显示两行Text的Adapter,使用这个Adapter为ListView绑定数据。 

    首先,创建一个有两个TextView组成的Layout - TwoRowLayout.axml,这个文件就相当于ListView中一个项目模板。 源代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:text="Text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20dip"
            android:id="@+id/Text1" />
        <TextView
            android:text="Text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14dip"
            android:id="@+id/Text2" />
    </LinearLayout>
    

    其次, 要定义个性化类TwoRowItem, ListView绑定的数据将会是一个List<TwoRowItem>。

    public class TwoRowItem
    {
        public string Row1 { get; set; }
        public string Row2 { get; set; }
    }
    

    创建一个TwoRowListAdapter,该类继承BaseAdapter<TwoRowItem>。并实现该基类的一些方法。

    public class TwoRowListAdapter:BaseAdapter<TwoRowItem>
    {
        List<TwoRowItem> items;
        Activity context;
    
        public TwoRowListAdapter(Activity context, List<TwoRowItem> items)
        {
            this.items = items;
            this.context = context;
        }
    
        public override long GetItemId(int position)
        {
            return position;
        }
    
        public override TwoRowItem this[int position]
        {
            get
            {
                return items[position];
            }
        }
    
        public override int Count
        {
            get
            {
                return items.Count;
            }
        }
    
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var item = items[position];
            View view = convertView;
            if (view == null)
                view = context.LayoutInflater.Inflate(Resource.Layout.TwoRowLayout, null);
            view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Row1;
            view.FindViewById<TextView>(Resource.Id.Text2).Text = item.Row2;
    
            return view;
        }
    
    }
    

    然后, 就可以使用自定义的TwoRowListAdapter为ListView或GridView绑定数据了。在Second.axml中加入新控件ListView - listView1, 然后在SecondActivity.cs中为其绑定数据。 

            ListView myList = FindViewById<ListView>(Resource.Id.listView1);
    
            List<TwoRowItem> items = new List<TwoRowItem>();
            items.Add(new TwoRowItem
            {
                Row1 = "Hello Android!",
                Row2 = "Using java"
            });
            items.Add(new TwoRowItem
            {
                Row1 = "Hello Android again!",
                Row2 = "Using C#"
            });
    
            TwoRowListAdapter adapter = new TwoRowListAdapter(this, items);
            myList.SetAdapter(adapter);
    
            myList.ItemClick += (sender, e) =>
              {
                  TwoRowItem clickedItem = items[e.Position];
                  string method = clickedItem.Row2;
              };
    

    List Adapter

  • 相关阅读:
    TrendMicro PcCillin 2005卸载密码忘记。
    解决Exchange OWA用户登陆后有的用户文件夹显示中文有的显示英文。
    注册表解锁
    修改Linux Fedora Grup的默认启动系统.
    OfficeXP升级到SP3后outlook出现的恼人的提示。
    在 Outlook 中单击超链接时收到错误信息
    windows sbs 2003的功能限制和其他用法
    今天打了加强型乙肝疫苗。
    WSUS服务器的详细配置和部署转载
    当邮箱存储数据库达到 16 GB 限制时,Exchange Server 2003 邮箱存储无法装入
  • 原文地址:https://www.cnblogs.com/qixue/p/4816922.html
Copyright © 2020-2023  润新知