【Android UI】ListView系列一(基础篇)
————–ListView基础
ListView是一个用于显示滚动的列表项的视图组。listview通过一个适配器adapter将数据以列表的形式展示出来。listview可以说是Android应用层开发非常重要的组件之一,几乎每个App都有它的身影,通过适配器可以使listview呈现出各种不同的样式和风格,作为Android开发人员必须熟练掌握。
下面介绍一下listview的一些常用属性:
1.divider属性:在列表条目之间显示的可绘制对象或颜色.
- 布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:dividerHeight="4dp"android:divider="#789234" /></RelativeLayout>
- 效果图:分割线颜色,分割线宽度4dp
2.fastScrollEnabled属性:允许使用快速滚动手柄,可以通过拖动该手柄在列表中快速滚动.(其实就是右侧滑块).
- xml布局
<ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:fastScrollEnabled="true"android:divider="#789234"android:dividerHeight="4dp"/>
- 效果图:右侧显示快速滑块,fastScrollEnabled=”false”不显示滑块。
3.listSelector属性:用于在列表中指示当前选中条目的可绘制对象( 每个item背景/选择后的背景).
- xml布局
<ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:listSelector="@drawable/item_selector"/>
- res/drawable/item_selector.xml代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 触摸模式下单击时的背景图片 --><item android:drawable="@drawable/ajo" android:state_focused="true" android:state_pressed="true"/>
</selector>
- 效果图:点击的时候会改变item背景色
注:ajo.9.png图片是这个:
android:listSelector=“@null”,选中或点击列表项时无背景颜色变化。
4.scrollbars属性: 隐藏和显示右侧滚动条.
- xml代码
<ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scrollbars="none"/>
- 效果图:右侧滚动条消失
5.choiceMode属性: 定义了列表的选择行为,默认的情况下,列表没有选择行为。
- none:默认不指定选择的列表
- singleChoice:单选
multipleChoice:多选
xml代码
<ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:choiceMode="singleChoice"/>
- activity代码
public class MainActivity extends Activity
{private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView)findViewById(R.id.listview);List<String> data = new ArrayList<>();for (int i = 0; i < 80; i++){data.add("list------Item:" + i);}ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_checked, data);listView.setAdapter(adapter);}
}
- 效果图:需要带有选择框的情况下才可以选择
当设置android:choiceMode=”multipleChoice”时,效果图如下:
6.stackFromBottom属性:列表从底部显示。
- xml布局代码
<ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:stackFromBottom="true"/>
- 效果图
7.android:cacheColorHint属性。
- 一般给listview设置背景图片的时候(background=”@drawable/back”),如果滑动listview出现闪烁或者变黑的情况,设置android:cacheColorHint=”#00000000”( 透明)
下面说一下简单适配器的使用:
一.ArrayAdapter
- activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"/></RelativeLayout>
- MainActivity.java
public class MainActivity extends Activity
{private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView)findViewById(R.id.listview);//构建数据源List<String> data = new ArrayList<>();for (int i = 0; i < 80; i++){data.add("这是ArrayAdapter的例子:"+i);}//创建适配器adapter,这里指定的是一个系统的布局文件,就是一个TextView控件,来显示上面的数据源字符串ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, data);//设置适配器listView.setAdapter(adapter);}
}
- 效果图
一.SimpleAdapter
- activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><ListView
android:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#FFFFFF"android:divider="#423376"android:dividerHeight="2dp"android:scrollbars="none"/></RelativeLayout>
- MainActivity.java
public class MainActivity extends Activity
{private ListView listView;private List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();//keyprivate final String KEY[] = new String[]{"image","name","qianming"};//每一项数据显示对于的控件IDprivate final int ID[] = new int[]{R.id.item_image,R.id.item_name,R.id.item_qianming};//模拟数据源private final int IMAGEID[] = new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable.f,R.drawable.g,R.drawable.h,R.drawable.i,R.drawable.m};private final String NAME[] = new String[]{"杀阡陌","花千骨","张三丰","刘邦","孙权","赵云","宋江","雷军","马化腾","马云"};private final String QIANMING[] = new String[]{"愿得一人心,白首不相离","身无彩凤双飞翼,心有灵犀一点通","两情若是久长时,又岂在朝朝暮暮","东边日出西边雨,道是无晴却有晴","衣带渐宽终不悔,为伊消得人憔悴","天涯地角有穷时,只有相思无尽处","那人却在,灯火阑珊处","野旷天低树,江清月近人","海上生明月,天涯共此时","明月松间照,清泉石上流"};@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView)findViewById(R.id.listview);//构建数据源for (int i = 0; i < 10; i++){Map<String, Object> map = new HashMap<String, Object>();map.put(KEY[0], IMAGEID[i]);map.put(KEY[1], NAME[i]);map.put(KEY[2], QIANMING[i]);data.add(map);}//创建适配器adapter,这里指定的是一个系统的布局文件,就是一个TextView控件,来显示上面的数据源字符串SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data, R.layout.list_item, KEY, ID);//设置适配器listView.setAdapter(adapter);}
}
- 效果图
这里的布局是自定义的布局,可以根据自己的需求进行任意布局,当然,这只是界面的展示,listview 的更多特性还得自定义adapter来展示,关于自定义Adapter将在下篇博文中讲解
至此,listview基础使用方式就先说到这了,大家有什么疑问欢迎留言探讨!
【Android UI】ListView系列一(基础篇)相关推荐
- Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片
Android 音视频开发 上一篇文章:使用 imageview绘制一张图片 任务一 SurfaceView绘制一张图片 文章目录 Android 音视频开发 前言 一.surfaceview是什么? ...
- 视频教程-C# For Unity系列之基础篇-Unity3D
C# For Unity系列之基础篇 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设计理 ...
- Android UI开发第二十五篇——分享一篇自定义的 Action Bar
Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...
- (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇
(一)JAVA基于OPENXML的word文档插入.合并.替换操作系列之基础篇 前言 什么是Open Xml? Open XML SDK 这系列笔记要做点什么? 涉及技术点 关于word.openxm ...
- UI设计系列——Figma基础使用day1-1
UI设计系列--Figma基础使用 Figma下载 文档 社区(中国) 为什么选择Figma 汉化 基本操作 创建新设计 修改项目名 使用步骤 1.新建画布 2.添加页面元素 2.1 使用标尺(快捷键 ...
- Android自动化测试第一季(基础篇)-金阳光-专题视频课程
Android自动化测试第一季(基础篇)-32195人已学习 课程介绍 Android自动化测试第一季 初级 课程收益 零基础 讲师介绍 金阳光 更多讲师课程 ...
- Android自定义控件开发系列(零)——基础原理篇
在后边的文章中发现在说Android自定义时,有时候要重复解释很多东西,所以想想返回来增加一篇"基础原理篇",直接进入正题吧-- 首先的问题是:在Android项目开发中,什么时候 ...
- Android事件分发机制:基础篇:最全面、最易懂
如何提升安卓水平?安卓开发者必须了解的事件分发机制. 最全面.最易懂的形式来讲解Android事件分发机制. 0. 前言 鉴于安卓分发机制较为复杂,故分为多个层次进行讲解,分别为基础篇.实践篇与高级篇 ...
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...
- Android UI开发第三十三篇——Navigation Drawer For Android API 7
Creating a Navigation Drawer中使用的Navigation Drawer的android:minSdkVersion="14",现在Android API ...
最新文章
- 学习Windows2008——设计活动目录
- c运行库、c标准库、windows API的区别和联系
- ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- boost::hana::is_convertible用法的测试程序
- [CareerCup] 9.4 Subsets 子集合
- Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述
- word activex部件不能创建对象_如何用Word批量制作员工工作证?1分钟搞定1000份!只需三步...
- JSP九大内置对象(转载)
- Qt工作笔记-对QThread使用的进一步认识(exec及对象在哪个线程创建)
- 桌面上的计算机图标一直被选定,常见电脑桌面图标问题十则
- 走进COM组件系列(一)
- 金属摇滚混音教程|录制好吉他后,如何正确处理?(付QNA答疑)|MZD Studios
- 百度网盘内容提取网站
- Java实验9 矩形类的定义与封装
- 编写仿supersu的权限管理工具(aosp11 root、实现aosp系统内置wifi、root管理apk)
- 链路(link)与数据链路(data link)
- 用matlab求摆线,摆线-最速降曲线Matlab示例
- 【MPI编程】矩阵向量乘法--解法二(高性能计算)
- 喜剧院线电影《大夫我没病》在京开机
- java cstring_CString 操作指南
热门文章
- win10投影无法正常使用:我们正在确认此功能 解决方法
- 解决 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task
- 英伟达 Jetson Nano 新手必备:使用CSI或USB摄像头拍摄第一张照片
- html5 css动画效果代码,超酷震撼 8个HTML5/CSS3动画应用及源码
- 直击六大会场 | 洞察100+创新实践,2018TOP100summit圆满落幕!
- android2.2应用开发之IccCard(sim卡或USIM卡)
- 长链亲脂性二烷基碳菁类染料DiR iodide,DiR细胞膜染料,100068-60-8
- 垃圾小白羊leetcode刷题记录3
- php 照片变成卡通照片,怎么把照片做成q版卡通 照片变q版卡通人物 q版卡通头像制作...
- Win XP系统无法关机时如何强制软关机