zoukankan      html  css  js  c++  java
  • 使用自定的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

  • 相关阅读:
    java9
    java8
    java7
    java6
    java5
    java4
    java-list-分组
    Termux中安装gcc-7/gfortran-7实操过程,安装成功可以编译Fortran,c/c++
    安卓手机牛逼软件Termux中安装Archlinux,安装Jdk
    c++语言的组合类的使用,用组合类的方法计算两点间距离。
  • 原文地址:https://www.cnblogs.com/qixue/p/4816922.html
Copyright © 2011-2022 走看看