2016.11.22经验积累(1.item长按与单机,2调用联系人.3.LayoutInflater获取方式)

很早之前就想建立一个微博,记录一下每天工作遇到的问题,第一是为了加深印象,第二是为了给遇见类似问题的同志提供思路.现在微博审批通过了,非常高兴.

1.listView长按事件返回值,之前一直以为是鸡肋,没啥用.昨天项目经理让加一个长按删除功能,结果长按同时触发单机进详情页的动作,断点跑了半天,最后百度,结果让我 吐了一口老血.

如何破:修改长按监听返回值.list长按返回值:false同时触发点击与双击,true只触发双击.

2.调用系统联系人,开始找了系统里封装的代码贴过来,结果测试提bug说获取不到联系人及电话号码(测试人员华为手机,本攻城师小米4),随后网上找了N种方式,有结果了确不太理解,一个联系人应该对应多个电话号码吧?!好使就行,不求甚解了!!!.

如何破:直接上代码

//触发调用系统联系人

startActivityForResult(new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI), CONTACT_PICKER_RESULT);//CONTACT_PICKER_RESULT 这个值自己定义

//onActivityResult 返回值处理

if (requestCode == CONTACT_PICKER_RESULT) {
if (resultCode == Activity.RESULT_OK) {
if (data == null) {
return;
}
try {
String username, usernumber;
// ContentProvider展示数据类似一个单个数据库表
// ContentResolver实例带的方法可实现找到指定的ContentProvider并获取到ContentProvider的数据
ContentResolver reContentResolverol = getContentResolver();
// URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集
Uri contactData = data.getData();
// 查询就是输入URI等参数,其中URI是必须的,其他是可选的,如果系统能找到URI对应的ContentProvider将返回一个Cursor对象.
Cursor cursor = managedQuery(contactData, null, null, null,
null);
cursor.moveToFirst();
// 获得DATA表中的名字
username = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
UIControlUtils.UITextControlsUtils.setUIText(
findViewById(R.id.liveUserName), UITag.EDIT_TEXT,
username);
// 条件为联系人ID
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 获得DATA表中的电话号码,条件为联系人ID,因为手机号码可能会有多个
Cursor phone = reContentResolverol.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
while (phone.moveToNext()) {
usernumber = phone
.getString(phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
UIControlUtils.UITextControlsUtils.setUIText(
findViewById(R.id.liveUserTel),
UITag.EDIT_TEXT, usernumber);
}

} catch (Exception ex) {
System.out.println(ex.getMessage());
}

}

3.LayoutInflater的获取方式,三种:

a. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater()

b. LayoutInflater inflater = LayoutInflater.from(context);
c. LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);

其原理调用系统服务,联想到很多类似的代码底层都是这样的,写下来加深记忆.

时间: 2024-08-03 15:14:23

2016.11.22经验积累(1.item长按与单机,2调用联系人.3.LayoutInflater获取方式)的相关文章

【2016.11.22】css实现几个效果

1.阴影box-shadow 语法:box-shadow: h-shadow v-shadow blur spread color inset; h-shadow必需.水平阴影的位置.允许负值. v-shadow必需.垂直阴影的位置.允许负值. blur可选.模糊距离.但其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊: spread可选.阴影的尺寸. color可选.阴影的颜色.请参阅 CSS 颜色值.如不设定颜色,浏览器会取默认色,但各浏览器默认取色不一致

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

每周进度及工作量统计——2016.11.24-2016.11.30

项目:连连看游戏 项目类型:四人小组项目 小组名称:天天向上 小组成员:王森.张政,张金生,栾骄阳 项目改进:final版本研发和维护 项目预期时间:2016.9.10-2016.12.8 2016.11.26-2016.11.27 C类别 C内容 S开始时间 E结束时间 I间隔 T净时间 P预计时间 分析 讨论  13:24  13:43  0  19  20   设计  13:43  14:04  0  21  30 编码 功能优化  14:46  16:51  26  99  120 文档

2008 Ubuntu Release Party 台中场(11/22)

摘要:2008 Ubuntu Release Party 台中场(11/22) 2008 Ubuntu Release Party 台中场主办:? Ubuntu-tw 和 SA@台中 , 联合举办活动日期:? 2008/11/22(六) 14:00~17:00活动地点:? ? ?台中教育大学 数位内容系? ? ?台中市西区民生路140号? ? ? (民权路,五权路交叉口? ?求真楼4F 409,410)费用:? ? 仅酌收餐点费用 150 元(含点心及饮料)自备:? notebook.电源线报名

“耐撕”团队 2016.3.22 站立会议

时间:2016.03.22 ① :18:00--18:25   ②18:40--19:00   总计45分钟. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:http://www.cnblogs.com/charliePU/), Q 齐嘉亮(博客:http://www.cnblogs.com/dendroaspis-polylepis/), L  刘伟硕(博客:http://www.cnblogs.com/We

2016/11/30 (内置函数)

---------------------------------------------------------分割线---------------------------------- 随机验证码 1 生成一个随机的验证码,65-90 2 #数字转化为字母:chr(数字) 3 import random 4 5 temp = "" 6 for i in range(4): 7 num = random.randrange(0, 4) 8 if num == 3 or num ==

#有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值

1 #!/usr/bin/env python 2 #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值 3 4 li = [11,22,33,44,55,66,77,88,99,90] 5 person = {">66":[],"<=66":[]} 6 for i,j in enumerate(li,0) : 7 8 if int(j) >

lambd的使用ret = filter(lambda x : x &gt; 22 ,[11,22,33,44])

1 #!/usr/bin/env python 2 #def f1(x) : 3 # return x > 22 4 ret = filter(lambda x : x > 22 ,[11,22,33,44]) 5 print(ret) 6 for i in ret : 7 print(i)

2016.11.18多态

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 结论: java中基类对象不能当做子类对象使用,需要用强制转换来实现,子类对象变量=(子类名)基类对象名:错误的代码是d=m; d=c; 1.   左边的程序运行结果是什么?2.   你如何解释会得到这样的输出?3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性? 运行结果截图: pu