xamarin android listview的用法

简介: listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣。原谅我的大小写吧.listview绑定自定义的BaseAdapter先来看一下最终实现的效果图:News.

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例子源码下载

目录
相关文章
|
7月前
|
API Android开发 开发者
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
98 2
|
3月前
|
编解码 前端开发 Android开发
Android经典实战之TextureView原理和高级用法
本文介绍了 `TextureView` 的原理和特点,包括其硬件加速渲染的优势及与其他视图叠加使用的灵活性,并提供了视频播放和自定义绘制的示例代码。通过合理管理生命周期和资源,`TextureView` 可实现高效流畅的图形和视频渲染。
291 12
|
6月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
72 2
|
7月前
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
744 1
|
5月前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式有哪些用法
Kotlin的Lambda表达式是匿名函数的简洁形式,常用于集合操作和高阶函数。基本语法是`{参数 -&gt; 表达式}`。例如,`{a, b -&gt; a + b}`是一个加法lambda。它们可在`map`、`filter`等函数中使用,也可作为参数传递。单参数时可使用`it`关键字,如`list.map { it * 2 }`。类型推断简化了类型声明。
32 0
|
6月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
219 2
|
7月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
70 2
|
7月前
|
定位技术 Android开发
Intent在Android中的几种用法
Intent在Android中的几种用法
87 1
|
7月前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
|
7月前
|
Java Android开发 数据安全/隐私保护
安卓逆向 -- IDA基本用法
安卓逆向 -- IDA基本用法
104 0
下一篇
DataWorks