仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2973|回复: 19
打印 上一主题 下一主题

[学习教程] IOS编程之Android之旅八 ListView、TabHost、Spinner控件具体先容仓酷云

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一个人负责协调他们的工作并且如果有新增加的衣服或者要移除之前的衣服通知他俩(NSManagedObjectContext)NSManagedObject本博客为人人先容android中的绝对对照庞大的控件,但愿对人人能有所匡助,上面顺次来看看吧!!
1、ListView
我们利用ListView来显现两列,一列暗示用户名,一列暗示用户的IP地点
在main.xml中设置全体结构:

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:orientation="vertical">
  • <LinearLayout
  • android:id="@+id/listLinearLayout"
  • android:layout_width="fill_parent"
  • android:layout_height="wrap_content"
  • android:orientation="vertical">
  • <ListView
  • <spanstyle="color:#ff0000;">android:id="@id/android:list"
  • </span>android:layout_width="fill_parent"
  • android:layout_height="wrap_content"
  • android:drawSelectorOnTop="false"
  • android:scrollbars="vertical">
  • </ListView>
  • </LinearLayout>
  • </LinearLayout>
个中,必需要加上白色标记部分,用来暗示ListView的ID,不然体系启动会报错,其次,我们还得要有一个结构文件,它用来暗示ListView中各列显现的结构,我这里取名为user.xml:

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:orientation="horizontal"
  • android:paddingLeft="10dip"
  • android:paddingRight="10dip"
  • android:paddingTop="1dip"
  • android:paddingBottom="1dip">

  • <TextViewandroid:id="@+id/user_name"
  • android:layout_width="180dip"
  • android:layout_height="30dip"
  • android:textSize="10pt"
  • android:singleLine="true"/>

  • <TextViewandroid:id="@+id/user_ip"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:textSize="10pt"
  • android:gravity="right"/>
  • </LinearLayout>
好了,接上去界说我们的Activity类,这个类需承继自ListActivity:

  • packagecom.test;

  • importjava.util.ArrayList;
  • importjava.util.HashMap;
  • importjava.util.List;

  • importandroid.app.ListActivity;
  • importandroid.os.Bundle;
  • importandroid.view.View;
  • importandroid.widget.ListView;
  • importandroid.widget.SimpleAdapter;

  • publicclassListViewActivityextendsListActivity{
  • @Override
  • publicvoidonCreate(BundlesavedInstanceState){
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • //创立一个list对象,为个中增添响应的信息
  • List<HashMap<String,String>>list=newArrayList<HashMap<String,String>>();
  • HashMap<String,String>map1=newHashMap<String,String>();
  • HashMap<String,String>map2=newHashMap<String,String>();
  • HashMap<String,String>map3=newHashMap<String,String>();
  • map1.put("user_name","zhangsan");
  • map1.put("user_ip","192.168.1.5");
  • map2.put("user_name","lisi");
  • map2.put("user_ip","192.168.1.6");
  • map3.put("user_name","wangwu");
  • map3.put("user_ip","192.168.1.7");
  • list.add(map1);
  • list.add(map2);
  • list.add(map3);

  • //暗示ListView中的两列
  • SimpleAdapterlistAdapter=newSimpleAdapter(this,list,R.layout.user,
  • newString[]{"user_name","user_ip"},newint[]{
  • R.id.user_name,R.id.user_ip});
  • this.setListAdapter(listAdapter);
  • }
  • //参数:ListView自己,被点击控件的对象,地位,id
  • @Override
  • protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
  • super.onListItemClick(l,v,position,id);
  • System.out.println("id:"+id);
  • System.out.println("position:"+position);
  • }
  • }
注重SimpleAdapter中的参数先容:1、以后对象2、list数据,个中的键值要与user.xml中的各TextView中的id要一样3、界说寄存内容的结构文件,下面我们已提到了4、找寻HashMap中的键值,与HashMap中的键值绝对应5、user.xml中结构文件的ID
onListItemClick是点击每行所触发的事务,我们能够失掉响应的信息!
必要一致的中央:HashMap中的键值、newString中字符数组、user.xml中控件ID要分歧,如许我们的ListView页面就出来了!!

<br>
2、TabHost:就是分页卡,像我们手机中的已接来电、未接来电、全体通话等等
借用下面的ListView,我们利用TabHost,一个页面用来显现下面ListView中的信息,另外一个页面用来显现hello字符串信息
把下面Listview中的结构文件、user.xml文件、和ListActivity拷贝到项目中来,由于这些都必要用到,新建TabHost的结构文件tab.xml:

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <TabHostxmlns:android="http://schemas.android.com/apk/res/android"
  • android:id="@android:id/tabhost"android:layout_width="fill_parent"
  • android:layout_height="fill_parent">
  • <LinearLayoutandroid:orientation="vertical"
  • android:layout_width="fill_parent"android:layout_height="fill_parent"
  • android:padding="5dp">
  • <TabWidgetandroid:id="@android:id/tabs"
  • android:layout_width="fill_parent"android:layout_height="wrap_content"/>
  • <FrameLayoutandroid:id="@android:id/tabcontent"
  • android:layout_width="fill_parent"android:layout_height="fill_parent"
  • android:padding="5dp">
  • <TextViewandroid:id="@+id/hello"
  • android:layout_width="fill_parent"
  • android:layout_height="wrap_content"
  • android:text="@string/hello"/>
  • </FrameLayout>
  • </LinearLayout>
  • </TabHost>
注重:利用TabHost中的结构就必需依照TabHost内里响应的结构举行,不然会报错;接上去我们在Activity中将ListView及文本到场到TabHost中:

  • packagecom.harder.xin;

  • importandroid.app.TabActivity;
  • importandroid.content.Intent;
  • importandroid.content.res.Resources;
  • importandroid.os.Bundle;
  • importandroid.widget.TabHost;

  • publicclassMainActivityextendsTabActivity{
  • @Override
  • publicvoidonCreate(BundlesavedInstanceState){
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.tab);
  • addTab();
  • }

  • /**
  • *增加Tab
  • */
  • privatevoidaddTab(){
  • //失掉以后Activity的TabHost类,针对TabActivity的操纵一般都由这个类完成
  • TabHosttabHost=getTabHost();
  • //创立TabHost.TabSpec,这个对象代表了一页
  • TabHost.TabSpecremoteTabSpec=tabHost.newTabSpec("listpage");
  • IntentremoteIntent=newIntent();
  • //天生一个Inent对象,该对象指向一个Activity
  • remoteIntent.setClass(this,ListViewActivity.class);
  • //设置Tab内里的内容
  • remoteTabSpec.setContent(remoteIntent);
  • //设置Tab里的setIndicator了解为label和icon图标,这里利用的图标是体系内里自带的
  • Resourcesres=getResources();
  • remoteTabSpec.setIndicator("列表页面",res.getDrawable(android.R.drawable.stat_sys_download));
  • //将设置好的TabSpec对象增加到tabHost中
  • tabHost.addTab(remoteTabSpec);

  • //创立第二个tabHost
  • TabHost.TabSpeclocalTabSpec=tabHost.newTabSpec("text");
  • localTabSpec.setContent(R.id.hello);
  • localTabSpec.setIndicator("文本页面",res.getDrawable(android.R.drawable.stat_sys_upload));
  • tabHost.addTab(localTabSpec);
  • }
  • }
响应的正文在代码中能够晓得,注重:在AndroidMainifest.xml中将TabActivity主界面设置为启动页面,设置好后,我们看到的效果:

<br>
<br>
3、Spinner:android选择框,相称于我们的下拉列表,让我们能够选择响应的数据
数据界说,我们能够在strings.xml中指定命据,也能够本人在代码中把持显现的数据,只是我们在strings.xml中界说的数据不天真,而在代码中把持我们要显现的数据是我们常常用到的,这两种体例的区分是创立ArrayAdapter的体例分歧,上面来看一下:
起首界说我们的结构文件:得在结构文件中到场Spinner标签:

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:orientation="vertical">

  • <Spinner
  • android:layout_width="fill_parent"
  • android:layout_height="wrap_content"
  • android:id="@+id/planets_spinner"
  • />
  • </LinearLayout>
经由过程strings.xml界说要显现的数据,在strings.xml中到场string-array数组,大概在values中增加array.xml文件也能够界说:

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <resources>
  • <stringname="hello">HelloWorld,MainActivity!</string>
  • <stringname="app_name">Spinner</string>
  • <spanstyle="color:#ff0000;"><string-arrayname="planets_array">
  • <item>changsha</item>
  • <item>zhuzhou</item>
  • <item>xiangtan</item>
  • <item>hengyang</item>
  • <item>huaihua</item>
  • </string-array>
  • </span></resources>
好了,界说好数据后,经由过程代码显现数据:

  • /**
  • *经由过程在strings.xml中界说数据来创立Spinner
  • *数据是逝世的,不天真
  • */
  • privatevoidcreateSpinnerByStringXML(){
  • //经由过程createFromResource办法创立一个ArrayAdapter对象;
  • //第一个参数暗示以后高低文对象
  • //第二个参数援用了在strings.xml中界说的String数组
  • //第三个参数用来指定Spinner的款式,是一个结构文件ID,该结构文件由android体系供应,也能够交换为本人的结构文件
  • ArrayAdapter<CharSequence>adapter=ArrayAdapter.createFromResource
  • (this,R.array.planets_array,android.R.layout.simple_spinner_item);
  • //设置Spinner中每一个条目标款式,一样是援用android体系供应的一个结构文件
  • adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  • spinner.setAdapter(adapter);
  • spinner.setPrompt("选择乡村");
  • //选择每一个条目后所触发的事务
  • spinner.setOnItemSelectedListener(newSpinnerClickListener());
  • }
然后在我们界说的Activity的onCreate办法中挪用下面的办法,运转程序便可看到以下页面:

<br>
好了,接上去我们在程序中本人界说数据,我们还必要一个xml文件,用来暗示每条数据显现的结构,下面是用的android内里本人供应的结构款式,我们这里界说为item.xml

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:orientation="vertical">
  • <TextView
  • android:id="@+id/textViewId"
  • android:layout_width="fill_parent"
  • android:layout_height="wrap_content"/>
  • </LinearLayout>
接上去在程序中把持显现:

最重要的就是UINavigationController他是一层一层推进view的打开iPhone里的联系人每点一个联系人屏幕就会像右推到下一个界面这就是UINavigationController在做的事UINavigationController
因胸联盟 该用户已被删除
沙发
发表于 2015-1-20 07:49:01 | 只看该作者
这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。
简单生活 该用户已被删除
板凳
发表于 2015-1-29 05:12:42 | 只看该作者
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
分手快乐 该用户已被删除
地板
 楼主| 发表于 2015-1-31 07:01:56 来自手机 | 只看该作者
到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了
灵魂腐蚀 该用户已被删除
5#
发表于 2015-1-31 20:48:47 | 只看该作者
因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。
若天明 该用户已被删除
6#
发表于 2015-2-4 16:28:13 | 只看该作者
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
只想知道 该用户已被删除
7#
发表于 2015-2-9 22:03:28 | 只看该作者
还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。
飘灵儿 该用户已被删除
8#
发表于 2015-2-27 23:30:34 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
海妖 该用户已被删除
9#
发表于 2015-3-9 15:08:25 | 只看该作者
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
爱飞 该用户已被删除
10#
发表于 2015-3-21 14:08:02 | 只看该作者
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
若相依 该用户已被删除
11#
发表于 2015-3-24 23:44:09 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
活着的死人 该用户已被删除
12#
发表于 2015-4-4 18:37:22 | 只看该作者
这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。
精灵巫婆 该用户已被删除
13#
发表于 2015-4-16 09:08:22 | 只看该作者
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
老尸 该用户已被删除
14#
发表于 2015-4-26 00:27:06 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
变相怪杰 该用户已被删除
15#
发表于 2015-4-26 20:40:07 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
再现理想 该用户已被删除
16#
发表于 2015-6-19 21:14:14 | 只看该作者
iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
再见西城 该用户已被删除
17#
发表于 2015-6-21 13:56:55 | 只看该作者
看《iPhone 4与iPad开发基础教程》,跟着一步步来
山那边是海 该用户已被删除
18#
发表于 2015-6-21 17:01:36 | 只看该作者
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
小女巫 该用户已被删除
19#
发表于 2015-6-27 05:19:29 | 只看该作者
down下code4app网站的每个分类的代码挨着看
乐观 该用户已被删除
20#
发表于 2015-7-1 13:38:56 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-28 17:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表