一、该应用包含以下功能
添加联系人
删除联系人
编辑联系人
联系人详情
打电话
发短信
二、界面如下
1 列表界面
2 添加编辑界面
3 长按列表item弹出的上下文菜单
4 发短信界面
5 详情界面
三、涉及的技术
1 常用控件 下拉框 单选框 复选框 图片按钮 菜单(点击menu弹出菜单 上下文菜单(长按菜单)等
1 菜单控件(点击menu弹出菜单) 在activity(点击menu弹出菜单中重写
1.1 在activity中重写 onCreateOptionsMenu方法 加入菜单项menu.add(1, 1, 1, "添加");
1.2 设置 actionbat显示 menu.add("添加")
.setShowAsAction (MenuItem.SHOW_AS_ACTION_IF_ROOM);//在actionbar上显示菜单项
1.3 在activity中重写 onOptionsItemSelected方法 之后根据菜单项的id或者tilte判断是按下了哪个菜单
2 上下文菜单(长按菜单)
2.1 给list控件登记 registerForContextMenu(listView);
2.2 activity中 重写onCreateContextMenu
2.3 activity中 重写 onContextItemSelected 增加菜单项选择事件
3 适配器adapter的使用
3.1 ArrayAdapter 单列的时候 适合简单数据类型 要求控件必须是textview类型
adpter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
3.2 SimpleAdapter 多列时使用
android的系统布局最多只有两列,当然可以自定义布局文件,list数据元素是一个个的map
把map中的元素根据字符串数组 寻找到key,并把key对应的值绑定到相应顺序的控件上
3.3 CursorAdapter 游标适配器 查询数据库时返回使用
注意 在用CursorAdapter时 返回的主键字段必须为_id
3.4 自定义适配器 继承BaseAdapter
在列表显示中,listView 其实不能单独装载数据,它的每一列都需要各自独立的控件,
之后我们 用 适配器把数据绑定到各自独立的控件中。
数据如何绑定呢,
1 编写适配器类 继承BaseAdapter
2 因为数据要绑定的控件是在布局文件里的,所以要获得布局文件的实例
依靠LayoutInflater 类
(LayoutInflater)context.getSystemServ(Context.LAYOUT_INFLATER_SERVICE);
3 使用LayoutInflater的inflate方法或许布局文件实例 作用类似于findViewById()。
4 获得布局文件实例后 其实是view组件 在获取布局文件中的各个控件实例
根据position参 数对某行数据进行逐个绑定
5 利用缓存提高效率 tag
需要说明的一点是对于以上1,2,3步骤,
我们是可以通过硬编码的方式创建布局以及布局中的控件 的,其实布局也是view的一种
3.5 adapter绑定的数据更新后,如果数据不及时更新,
请调用 adapter.notifyDataSetChanged(); 数据更 新后及时告知主线程---ui线程
3.6 关于LayoutInflater这个类 它的作用类似于findViewById()。
不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;
而findViewById()是找xml 布局文件下的具体widget控件(如Button、TextView等)。
具体作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activity.findViewById()方法来获得其中的界面元素。
4 activity如何通信的
1 如何启动activity
1.1 startActivity
1.2 startActivityForResult 可以接收返回结果
在打开的新的activity中调用setResult方法设置intent返回数据,关闭新的actibity
在前一个activity重写 onActivityResult 接收返回数据
利用请求码在onActivityResult方法中告诉是老的activity中哪个按钮打开 区分不同的点击事件
利用结果码来区分不同的新的activity返回 如一个activity可能打开多个新的activity,当关闭后
怎么区分是哪个activity呢,此时就用结果码判断
2 传递数据 利用intent以及bundle类 bundle类似map
2.1 利用Bundle类
2.2 直接使用intent 这种写法的作用等价于上面的写法,
只不过这种写法是把数据一个个地添加进Intent,这种写法使用起来比较方便,
2.3 如何传递复杂的数据类型,如对象或者集合,如果需要传递对象,
则对象需要序列化,在android中,序列化对象有两种方式
1 对象实现Serializable接口 jdk已经实现序列化了 之后调用intent的putExtra方法
2 对象实现Parcelable接口,自己实现序列化方法,
1 实现接口方法中writeToParcel写入需要序列化对象属性,如
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
。。。
}
2 定义一个public static final Parcelable.Creator<Person> CREATOR 变量,名字必须为CREATOR ,例如
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
public Person createFromParcel(Parcel source) {
//注意按照顺序读出 writeToParcel方法中怎么写入,source则怎么读出
return new Person(source.readString(), source.readInt(),
source.readString(), source.readString());
}
public Person[] newArray(int size) {
return new Person[size];
}
};
3 删除时跳出确认对话框 AlertDialog.Builder.create().show()
说明:本应用数据保存在内存中,下一次保存在文件与数据库中
相关推荐
Android学习笔记 Android学习笔记 Android学习笔记
Android学习笔记
android 学习笔记(全全整理),吧android学习笔记全部整理下来了,可以去好好学习学习
第一行代码 android学习笔记 修改完整版
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
Android 开发学习笔记,学习android的好资料
android 学习笔记 android 学习笔记 android 学习笔记
自己整理的Android学习笔记 都是一些小细节,有用
学习java和android的笔记 更容易学习android 资深学习android 具有大量学习的笔记 很多的错误 都是从细节开始学习的
android学习笔记系列,对android开发有帮助。
Android应用开发_学习笔记.docAndroid应用开发_学习笔记.docAndroid应用开发_学习笔记.docAndroid应用开发_学习笔记.doc
Android学习笔记,介绍怎么学习android。
Android学习笔记_3.开发第一个Android应用.pdf
Android学习笔记(十三) 碎片 完整源码
android学习笔记
Android学习笔记(1)-永远不变的Hello World Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。 SDK的下载...
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
android入门学习笔记