• xamarin android listview的用法


    listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣。原谅我的大小写吧.

    listview绑定自定义的BaseAdapter

    先来看一下最终实现的效果图:

    News.cs 和NewAdapter.cs

    namespace DrawerLayout.Adapter
    {
        public class News {
            public int Pv { get; set; }
            public string Title { get; set; }
            public News(string  title,int Pv)
            {
                this.Title = title;
                this.Pv = Pv;
            }
        }
        public class NewsAdapter : BaseAdapter
        {
            private List<News> data;
            private Context context;
            public override int Count
            {
                get
                {
                    return data.Count;
                }
            }
    
            public NewsAdapter(List<News> data,Context context)
            {
                this.data = data;
                this.context = context;
            }
    
    
            public override Java.Lang.Object GetItem(int position)
            {
                return null;
            }
    
            public override long GetItemId(int position)
            {
                return position;
            }
    
            public override View GetView(int position, View convertView, ViewGroup parent)
            {
                convertView = LayoutInflater.From(context).Inflate(Resource.Layout.lv_test,parent,false);
                TextView title = convertView.FindViewById<TextView>(Resource.Id.tv_title);
                TextView pv = convertView.FindViewById<TextView>(Resource.Id.tv_pv);
                pv.Text = data[position].Pv.ToString();
                title.Text = data[position].Title;
                return convertView;
                 
            }
        }
    }
    listview布局lv_test.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"
        android:background="#ffffff"
        android:padding="10dp">
        <LinearLayout
            android:id="@+id/layout_content"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:orientation="horizontal"
            android:gravity="center_vertical">
            <TextView
                android:id="@+id/tv_title"
                android:layout_height="50dp"
                android:layout_width="0dp"
                android:layout_weight="5"
                android:textColor="#000000"
                android:text="加内特的历史地位比邓肯差多少,差了一个艾佛森吗?"
                android:textSize="16dp" />
            <TextView
                android:id="@+id/tv_pv"
                android:layout_height="40dp"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:textColor="#808080"
                android:textSize="12dp"
                android:text="19665"
                
                android:gravity="right|center_vertical" />
        </LinearLayout>
        <View
            android:layout_height="1dp"
            android:layout_width="match_parent"
            android:background="#dedede" />
    </LinearLayout>
    最后是MainActivity.cs
    namespace DrawerLayout
    {
        [Activity(Label = "ListViewDemo", MainLauncher = true, Icon = "@drawable/icon")]
        public class MainActivity : Activity
        {
            int count = 1;
            private List<News> data;
            private Context context;
            private NewsAdapter adapter;
            private ListView lv_test;
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                SetContentView(Resource.Layout.Main);
    
                data = new List<News>() {
                    new News ("加内特的历史地位能在NBA排第几,超越德国战车?",1200),
                    new News ("盘点新赛季最期待的十场比赛,无湖人比赛?",560),
                    new News ("库里新赛季铁定无缘常规赛MVP",158200),
                    new News ("我服,库里,杜兰特,汤普森谁才是出手的最佳选择",900),
                    new News ("易建联的出场时间你能猜出来吗,大概多少",960),
                      new News ("卡戴珊三姐妹睡多少男人",960),
                      new News("科比退役后湖人到底失去多少中国的粉丝",4986),
                      new News("科比退役湖人签中国篮球当家背后隐藏了多少阴谋",65987)
                };
                adapter = new NewsAdapter(data,this);
    
                lv_test = FindViewById<ListView>(Resource.Id.lv_test);
                //View lv_header = LayoutInflater.Inflate(Resource.Layout.lv_header, null);
                //lv_test.AddHeaderView(lv_header);
                lv_test.Adapter = adapter;
                
                
                lv_test.ItemClick += (s, e) =>
                {
                    OnClick(e.Position);
                };
            }
            public void OnClick(int position)
            {
                position--;
                Toast.MakeText(this,$"这条新闻有"+data[position].Pv+"次浏览量",ToastLength.Short).Show();
            }
        }
    }
    

    一个最简单的listview绑定数据就这么简单的。后面将会介绍几个比较常用额属性和方法

    2.xamarin android ListView表头表尾分割线的设置:

    listview可以自己设置表头表位,以及分割线,下面看一看具体的方法:

    • divider:设置分隔条,当设置为@null时则没有分隔条,设置的值可以是颜色代码,也可以是drawable资源分割
    • dividerHeight:设置分隔条的高度
    • footDividersEnabled:是否在footerView 表尾前绘制一个分隔条,默认为true
    • headerDividerEnabled同上

    这里我参考的csdn-pig写的android博客,设置listview 表头表尾丙没有这种属性,只用以下几个方法

    • AddHeaderView(View v):添加headerView 表头,View v参数是一个布局页
    • AddHeaderView(headerView,null,false):添加headerView 表头,设置header是否可以选中

    • AddFooterView(View v):同上
    • AddFooterView(headerView,null,false):同上
    除了以上几个属性我们还可以设置listview的点击效果等

    • stackFromBottom:设置列表放在最下面,默认为的false
    • cacheColorHint:如果你的Listview的Background是一张图片的话,当你拖动和点击ListView Item空白位置会发现item都变成黑色了,这个时候设置cacheColorHint设置为透明#00000000 ,6个0的是黑色
    • 隐藏滚动条 android:scrollbars="none
    关于listview的简单的用法就这么了,当然这是最基础的,还有很多问题需要去探索,listview 单击项的效果,listview控件的优化。。。。。。

    listview demo 下载链接 : ListView例子源码下载

  • 相关阅读:
    c# 读取数据库得到dateset
    c# 读数据库二进制流到图片
    c# 读取数据库得到字符串
    c#打开颜色对话框
    WinForm-GridView
    arcengine 常用方法
    arcgis engine 调用arcgis server服务
    ae
    ae保存图层
    ae 打开地图文档
  • 原文地址:https://www.cnblogs.com/zhangmumu/p/7374813.html
Copyright © 2020-2023  润新知