当前位置:  编程技术>移动开发
本页文章导读:
    ▪ListView内控件与listview劫夺焦点        ListView内控件与listview抢夺焦点 1、item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触.........
    ▪ 在Xcode 4.2及 Snow Leopard下安装SDK 6.0        在Xcode 4.2及 Snow Leopard上安装SDK 6.0首先,Xcode4.5的dmg文件已mount为磁盘驱动器。打开终端窗口,键入“su-”命令,以root身份运行下列命令(或者建立一个shell脚本文件然后运行)。 echo copying iPhoneO.........
    ▪ 004 走下移动开发之安卓项目实战(百度map:行走路线 公交换乘路线 公交详细路线)       004 走上移动开发之安卓项目实战(百度地图:行走路线 公交换乘路线 公交详细路线) 这一篇帖子是按照上一篇帖子的逻辑来的,麻烦先看上一篇帖子 《003 走上移动开发之安卓项目实战(百度地.........

[1]ListView内控件与listview劫夺焦点
    来源: 互联网  发布时间: 2014-02-18
ListView内控件与listview抢夺焦点

1、item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉其内部button等控件的焦点获取,具体方法可以在自定义item的根控件中调用:

  setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 

这样就能阻塞字控件抢夺焦点,listview的onitemclick就能被正确触发,同时对item内部的button等控件也没有影响,他们在被点击时照样可以触发自身的点击事件。


2、当listview需要添加headerview时,可以通过调用listview的addHeaderView(headView, null, false) 方法,该方法还有一个重载方法 addHeaderView(headView);这两个方法的区别是前一个方法可以控制header是否可以被selected,如果不想被selected则将第三个参数设置成false;


3、接着上面说的添加header,添加header时调用的addHeaderView方法必须放在listview.setadapter前面,意思很明确就是如果想给listview添加头部则必须在给其绑定adapter前添加,否则会报错。原因是当我们在调用setAdapter方法时会android会判断当前listview是否已经添加header,如果已经添加则会生成一个新的HeaderViewListAdapter,这个新的HeaderViewListAdapter包含我们设置的adapter所有内容以及listview的header和footer。所以当我们在给listview添加了header后在程序中调用listview.getadapter时返回的是tempadapter而不是我们通过setadapter传进去的adapter。如果没有设置adapter则HeaderViewListAdapter与我们自己的adapter是一样的。listview.getadapter().getcount()方法返回值会比我们预期的要大,原因是添加了header。


4、接着上面的HeaderViewListAdapter说,我们自定义adapter里面的getitem方法里面返回的position是不包括header的,是我们自定义adapter中数据position编号从0开始,也就是说与我们传进去的list的位置是一样的。


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
// TODO Auto-generated method stub 
Log.i("adapter", "position:"+position); //这个position就是我们数据的真实位置 

而listview的onitemclick方法中:


public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
position是当前click的位置,这个位置是指在HeaderViewListAdapter中的位置,从0开始如果listview中添加了header则0代表header。

    
[2] 在Xcode 4.2及 Snow Leopard下安装SDK 6.0
    来源: 互联网  发布时间: 2014-02-18
在Xcode 4.2及 Snow Leopard上安装SDK 6.0

首先,Xcode4.5的dmg文件已mount为磁盘驱动器。打开终端窗口,键入“su-”命令,以root身份运行下列命令(或者建立一个shell脚本文件然后运行)。

echo copying iPhoneOS6.0.sdk

cp -R/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

 

echo copying iphonesim6.0.sdk

cp -R/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

 

echo copying devicesupport for 6.0

cp -R/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.0\\(10A403\) /Developer/Platforms/iPhoneOS.platform/DeviceSupport/

 

#remove old -latest- link

rm -f/Developer/Platforms/iPhoneOS.platform/DeviceSupport/Latest

 

echo setting up Latest link

cd/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

ln -s ./6.0\ \(10A403\) ./Latest

iPhoneSimulator 6.0模拟器在雪豹系统上运行似乎会有点问题,如果你在编译项目时遇到“Library not loaded: /usr/lib/system/libdispatch.dylib”错误,请删除iPhoneSimulator6.0模拟器。或将脚本中拷贝模拟器的cp命令删除。


    
[3] 004 走下移动开发之安卓项目实战(百度map:行走路线 公交换乘路线 公交详细路线)
    来源: 互联网  发布时间: 2014-02-18
004 走上移动开发之安卓项目实战(百度地图:行走路线 公交换乘路线 公交详细路线)

这一篇帖子是按照上一篇帖子的逻辑来的,麻烦先看上一篇帖子

《003 走上移动开发之安卓项目实战(百度地图:在地图范围内进行检索与驾车路线搜索)》

如果有什么不懂的请看上一篇帖子

《002 走上移动开发之安卓项目实战(百度地图:给地图添加标注物)》

如果还有什么看不懂的请您先从第一篇文章看起

《001 走上移动开发之安卓项目实战(百度地图:建立百度地图开发环境)》

还请大家注意在文章进行转载的时候麻烦注明出处

《http://blog.csdn.net/shuaiyinoo》谢谢


好了接下来今天给大家带来的是三个技术点,

第一个技术点:行走路线 

按照我们以前的经验要实现行走路线的搜索第一步先在  onCreate  方法中加入如下搜索代码

        //6.0行走路线的搜索
        //mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    //mkSearch = new MKSearch();
	    //mkSearch.init(bMapManager, new MySearchListener());
	    //给定第一个坐标
	    //start = new MKPlanNode();
	    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
	    //给定第二个坐标
	    //end = new MKPlanNode();
	    //end.pt = new GeoPoint(40057031,116307852);
	    //设置回调的行走路线的方法
	    //mkSearch.walkingSearch(null, start, null, end);
然后定义一个  MySearchListener implements MKSearchListener 他

实现接口中的 onGetWalkingrouteResult 方法

@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult result, int type) {
			//对调用的搜索方法进行回调响应
			if(result == null){
				return;
			}
			RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
			routeOverlay.setData(result.getPlan(0).getRoute(0));
			mapView.getOverlays().add(routeOverlay);
			//刷新地图
			mapView.invalidate();
		}


第二个技术点:公交换乘路线 

同样第一步,第二步的操作

        //7.0公交换乘路线的搜索
        //mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    //mkSearch = new MKSearch();
	    //mkSearch.init(bMapManager, new MySearchListener());
	    //给定第一个坐标
	    //start = new MKPlanNode();
	    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
	    //给定第二个坐标
	    //end = new MKPlanNode();
	    //end.pt = new GeoPoint(40057031,116307852);
	    //设置回调的行走路线的方法
	    //mkSearch.transitSearch("北京", start, end); 

@Override
		public void onGetTransitRouteResult(MKTransitRouteResult result, int type) {
			//公交换乘的回调方法
			if(result == null){
				return;
			}
			TransitOverlay transitOverlay = new TransitOverlay(BaiDu_SuYiActivity.this, mapView);
			transitOverlay.setData(result.getPlan(0));
			mapView.getOverlays().add(transitOverlay);
			//刷新地图
			mapView.invalidate();
		}


第三个技术点:公交详细路线

公交详细路线的搜索相对来说复杂一点点

第一步还是不变

	    //8.0公交详细路线的搜索
        mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    mkSearch = new MKSearch();
	    mkSearch.init(bMapManager, new MySearchListener());
	    //设置回调的行走路线的方法
	    mkSearch.poiSearchInCity("北京", "300");
第二步首先实现接口里面的这个方法
@Override
		public void onGetPoiResult(MKPoiResult result, int type, int iError) {
			//对调用的搜索方法进行回调响应
			//v8.00
			if(result == null||iError != 0){
				Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
				return;
			}
			//定义一个公交线路图描述类
			MKPoiInfo mkPoiInfo = null;
			//获得公交线路图的总的站点
			int totalPoiNum = result.getNumPois();
			for(int i = 0;i<totalPoiNum;i++){
				mkPoiInfo = result.getPoi(i);
				if(mkPoiInfo.ePoiType == 2){
					break;
					//如果说返回的时候公交的线路图就返回
				}
			}
			mkSearch.busLineSearch("北京", mkPoiInfo.uid);
		}
第三步然后再实现里面的下面这个方法
@Override
		public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
			
		}
		@Override
		public void onGetBusDetailResult(MKBusLineResult result, int type) {
			if(result == null||type != 0){
				Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
				return;
			}
			RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
			routeOverlay.setData(result.getBusRoute());
			//清空所有的公交信息
			mapView.getOverlays().clear();
			mapView.getOverlays().add(routeOverlay);
			mapView.invalidate();
			mapView.getController().animateTo(result.getBusRoute().getStart());
		}

这样这三个知识点就算完成了。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3