Android学习_7/27
一、 自定义控件
1. 引入布局
多个活动需要相同的布局时,使用引入布局的方式来实现代码复用。
activity_main.xlm中加入<include layout=”@layout/title”>
2. 创建自定义控件
如果引入的布局要求能够响应事件且功能都相同,为了避免为这些控件单独编写事件注册代码,最好采用自定义控件。
step1:新建自定义控件的类(TitleLayout)。
使用LayoutInflater实现动态加载布局:
LayoutInflater.from(context).inflate(R.layout.title,this); // from()方法构建LayoutInflater对象; inflate()方法的第一个参数是要加载的布局的id,第二个参数是给加载好的布局添加父布局。
step2:重写构造方法,为控件注册事件。
step3:在布局文件activity_main.xlm中添加自定义控件,添加自定义控件时要指明控件的完整类名。
<com.sprd.uilayouttest.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
二、
ListView
1.
Adapter
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:

Android中所有的Adapter一览:

由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。
u
BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性。
u
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
u
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
u
SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
2.
ListView的简单用法
step1:布局中加入ListView
step2:使用Adapter传递数据,建立ListView与数据的关联
ArrayAdapter<String>
adapter = new ArrayAdapter<String>(
MainActivity.this,android.R.layout.simple_list_item_1,data);
ListView listView =
(ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
android.R.layout.simple_list_item_1作为ListView子项的布局的id,是Android内置的布局文件,里面只有一个TextView。
setAdapter()传入构建好的适配器对象。
3.
定制ListView的界面
step1:定义ListView适配器适配的实体类。
step2:为ListView的子项指定一个自定义的布局。
step3:创建自定义适配器。
getView(int position, View convertView, ViewGroup parent)方法:每个子项被滚动到屏幕内的时候会被调用,在getView()方法中,首先通过getItem()方法得到当前项的Fruit实例,然后使用LayoutInflater来为这个子项。加载我们传入的布局。
4.
提升ListView的运行效率
缓存布局:使用getView()的convertView缓存布局。
缓存控件的实例:新增内部类ViewHolder缓存控件的实例,然后调用View的setTag()方法将ViewHolder对象存储在View中。
Android学习_7/27的更多相关文章
- 我的android学习经历27
前几天忙着学校的互联网+项目比赛,没有时间学习android和发一些东西,主要是这两天太累了,我是项目组长,好多东西去弄,今天已经交稿去进行初赛. 马上收拾收拾心情,继续我的andorid菜鸟之路 加 ...
- android学习笔记27——Activity
Activity配置==> android应用程序要求所有的应用程序组件都需要进行显示配置后,才可正常使用.包括:Activity.Service.BroadCastReceiver.Conte ...
- Android学习笔记27:网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- Android学习笔记(27):日历视图Calendar
日历视图CalendarView可用于显示和选择日期. 能够调用setOnDateChangedListener()方法绑定事件监听器. 经常使用XML属性和相关方法: XML属性 相关方法 说明 a ...
- Android学习_7/26
四种基本布局 1. 线性布局(LinearLayout) android:layout_gravity:指定控件在布局中的对齐方式 android:gravity:指定文字在控件中的对齐方式 andr ...
- Android学习_7/25
常用控件 Android控件使用规律:先定义id,再指定宽度和高度,然后适当加入一些控件特有的属性 1. TextView 在界面上显示一段文本 2. Button ...
- Android学习_7/24
一. 活动的生命周期 1. 活动状态 运行:位于返回栈栈顶 暂停:不在栈顶,但仍可见 停止:不在栈顶,完全不可见 销毁:从栈中移除 2. 活动的生存期 ...
- Android学习_7/23
1. 在活动中使用Menu 1) 什么是Menu? 2) 怎么实现? step1:res目录下创建Menu resource file,使用<item… ...
- Android学习_7/22
一.Android项目目录结构 1. AndroidManifest.xml:整个Android项目的配置,注册各组件 <activity android:name=" ...
随机推荐
- gperftools cpp wrapper
gperftools cpp wrapper // Compile command : ${CXX} -o test_profiler.elf -DUSE_GPERFTOOLS -DDEBUG -D_ ...
- Yali7月集训Contest2 T1 Cube 题解
题目链接: 连我们都只有纸质题目...话说雅礼集训都是这样的吗... 大意 0维基本图形是一个点 1维基本图形是一条线段 2维基本图形是一个正方形 3维基本图形是一个正方体 4维基本图形是... 求\ ...
- TensorFlow良心入门教程
All the matrials come from Machine Learning class in Polyu,HK and I reorganize them and add referenc ...
- 使用docker搭建OpenResty开发环境
Dockerfile文件: FROM centos:latest RUN yum install -y pcre-devel openssl-devel gcc curl wget perl make ...
- mysql8安装
1.先卸载当前系统中已安装的mariadb rpm -qa | grep mariadb rpm -e --nodeps 文件名 2.安装mysql依赖包 yum install gcc gcc-c+ ...
- MySql学习笔记【二、库相关操作】
命令规范 关键字.函数名称大写 数据库.表名.字段名小写 语句须以分号结尾 切换使用数据库 USE database_name 如:USE test 查看数据库列表 SHOW {DATABASES|S ...
- 查询表中列转换为json
DECLARE @sql VARCHAR(MAX) SET @sql= (SELECT (select '+'',"'+column_name+'":"''+CAST(' ...
- c++第四次作业:类的继承
一.定义 类的继承:是从新的类从已有类那里得到已有的特性. 二.方式 1.公有继承:当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问. 例: ...
- java8学习之深入函数式接口与方法引用
函数式接口: 函数式接口[FunctionalInterface]是整个Lambda表达式的一个根源,换句话来说java8中的Lambda表达式要想彻底掌握,前提是要彻底理解好函数式接口,所以这次继续 ...
- 【NOIP2017】小凯的疑惑
原题: 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价 ...