Xamarin Android开发控件之ListView展示数据

2025-10-30 03:49:36

1、//获取引用接口 

ItemInfos.ItemInfos itemInfo = new ItemInfos.ItemInfos();

       //需要展示出来的数据集  我显示Name字段的

        private List<Item> datas;

        //即将填充到的 ListView 

        ListView listView;

        protected override void OnCreate(Bundle bundle)

        {

            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Layouts);

            //获取页面上的ListView 

            listView = FindViewById<ListView>(Resource.Id.list);

            //获取接口数据返回Json格式

            string item = itemInfo.GetItemInfo("1",UserInfo.GetUserInfo().WorkerId, UserInfo.GetUserInfo().ObjectType);

            //将Json转换成数据集

            datas = JsonConvert.DeserializeObject<List<Item>>(item);

            

             //ListView 绑定自定义模版数据

            listView.Adapter = new ItemListAdapter(this, datas);

            //ListView 点击事件

            listView.ItemClick += listView_ItemClick;

        }

void listView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)

        {

            Toast.MakeText(this, "你选择了 " + datas[e.Position].Name, ToastLength.Short).Show();

       }

2、//自定义模版类

class ItemListAdapter : BaseAdapter<Item>

    {

         /// <summary>

        /// 所有Item 的数据

        /// </summary>

        List<Item> items;

    

        Activity context;

         //构造函数

        public ItemListAdapter(Activity context, List<Item> items)

            : base()

        {

            this.context = context;

            this.items = items;

        }

        public override long GetItemId(int position)

        {

            return position;

        }

        public override Item this[int position]

        {

            get { return items[position]; }

        }

        public override int Count

        {

            get { return items.Count; }

        }

        /// <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)

        {

            var item = items[position];

            var view = convertView;

            if (view == null)

            {

                //使用自订Layout

                view = context.LayoutInflater.Inflate(Resource.Layout.ItemList,null);

            }

            view.FindViewById<TextView>(Resource.Id.tvName).Text = item.Name;//显示绑定的字段

          

            return view;

        }

    }

3、------------------------------------------模版布局-------------------------

<?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"

    android:minWidth="25px"

    android:minHeight="25px">

  <ListView

      android:minWidth="25px"

      android:minHeight="25px"

      android:layout_width="fill_parent"

      android:layout_height="fill_parent"

      android:id="@+id/list" />

</LinearLayout>

4、------------------------------页面布局------------------------------------

<?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">

    <LinearLayout

        android:id="@+id/linearContainer"

        android:orientation="vertical"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:paddingLeft="10dip">

        <TextView

            android:id="@+id/tvName"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:textColor="#CDFFE7"

            android:textSize="20dip"

            android:textStyle="italic"

            android:text="User's Name" />

    </LinearLayout>

</LinearLayout>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢