综合课程设计-营养食谱系统_第1页
综合课程设计-营养食谱系统_第2页
综合课程设计-营养食谱系统_第3页
综合课程设计-营养食谱系统_第4页
综合课程设计-营养食谱系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

童蜃理工大辱综合课程设计报告题目 营养食谱系统二级学院计算机科学与工程学院专 业 网络工程学号姓 名邓中斌 时间2013-9-22营养食谱系统重庆理工大学综合课程设计营养食谱系统目录TOC\o"1-5"\h\z\o"CurrentDocument"第1章绪论 3\o"CurrentDocument"项目背景知识介绍 3\o"CurrentDocument"项目的意义和主要内容 3\o"CurrentDocument"第2章相关技术介绍 5\o"CurrentDocument"Animation介绍 5\o"CurrentDocument"Intent介绍 5\o"CurrentDocument"SharedPreferences介绍 6\o"CurrentDocument"SQLite介绍 6\o"CurrentDocument"Map介绍 6\o"CurrentDocument"simpleAdapter介绍 7\o"CurrentDocument"第3章需求分析 8功能结构图 8管理员操作 8\o"CurrentDocument"第4章系统设计 9\o"CurrentDocument"各模块关系布局 9\o"CurrentDocument"系统实现整个流程图 10\o"CurrentDocument"代码,布局文件结构 10模块布局以及核心代码 12进入动画 12登录操作 13\o"CurrentDocument"ListView操作及数据库运用 15\o"CurrentDocument"点击GridView中Item响应事件 23\o"CurrentDocument"第5章系统实现 25\o"CurrentDocument"系统运行截图 25操作简介 28\o"CurrentDocument"第6章总结 29\o"CurrentDocument"参考文献 302/30营养食谱系统重庆理工大学综合课程设计营养食谱系统第1章绪论项目背景知识介绍生物从低级到高级,从单细胞生物到高等动植物,从水中生活到陆地生活,所处的环境不同,生态各异。因此,所需要的养料和摄取养料的方式也不相同。生物所需的养料,其元素组成,大量的有氢、氧、氮和碳。这些是组成生物体的蛋白质和储存能量的主要元素。此外,还有少量的硫、磷、钙、镁、钾、钠、氯和多种微量元素。有些微量元素在生物体内仅有痕量。含有叶绿素和紫色素的植物和微生物能够经过根、叶或细胞膜直接从外界吸取这些无机化合物,并利用日光的能量来合成自身生长、发育等生命活动所需的有机物质,如蛋白质、脂质和碳水化合物(糖类)等。具有这样营养方式的生物称为自养型或无机营养型生物。另一些生物(如动物)不能直接利用外界的无机物合成自身生命所需的有机物,必须从自养型生物或其它同类生物获取养料。通过代谢过程将摄取的物质转变成自身所需的蛋白质、脂质、碳水化合物等有机物。具有这样营养方式的生物则称为异养型生物。营养学即是研究食物对生物的作用的科学。营养学在其发展的过程中,不仅包括食物进入机体内的变化,如参与生化反应和结合到组织细胞中;还包括指导人们如何选择食物以保障机体的正常生长、发育与繁殖。所以营养学除了有其生物学意义外,还有其社会经济意义。营养素是维持正常生命活动所必需摄入生物体的食物成分。现代营养学对于营养素的研究,主要是针对人类和禽畜的营养素需要。营养素分蛋白质、脂质、碳水化合物(糖类)、维生素和矿物质(无机盐)、水、纤维素7大类。例如每天吃的胡萝卜,地瓜,大豆里面都含有丰富的维生素C。项目的意义和主要内容“民以食为天”这是一个亘古不变的真理,人们的所有的社会活动必须建立在食的基础上。没有食的保障,所有的一切都是空谈。但是随着经济的猛速发展和人民生活水平的日益提高。人们对于食也有着更高的要求,现在不仅仅是停留在一日三餐的基本追求了。他们更加讲究每天吃的食物营养是否达标,怎么去吃自己才能摄取更好的营养,怎样去吃才能更好的保障自己的身体健康。同时也注意他们食物的多样化。同时他们也更加注意到每一道菜的外在,不再是只要能吃饱就行了。他们对于评价一道菜,一顿饭的要求更高,评价点更多。营养搭配,色泽效果,口感等等要求!虽然基本人人都有这样的要求,但是是不是人人都能做到这要的要求呢,答案显然不是。必须肯定的是现在这个社会对食物要求高的人很多很多,但是对食物都很有研究的人,那就没有那么多呢!很多人对于做饭就是一个难题,你在加上要菜品的多样化,营养达标化那就相当困难了。所以有一款这样的应用可以帮助一些对食物有一定要求但是自己又不会做的人是很有必要的。如果你什么时候心血来潮,想做一两道菜犒劳下自己,但是有不能做得太寒酸,那么如果你有一款这个应用。这个就再是问题了。它会成为老少皆宜,居家3/30营养食谱系统重庆理工大学综合课程设计营养食谱系统旅行的必备帮手。该应用有两个角色可以进入,一个是以管理员身份登录进入。管理员进入可以对该系统进行一些操作。默认进入只能查看营养搭配和美食烹饪与上传自己的食谱。不能对数据库中的数据进行操作。有三个选项供选择,一个是食物的营养搭配,一个是美食的菜谱以及用户可以的菜谱上传!4/30营养食谱系统重庆理工大学综合课程设计营养食谱系统第2章相关技术介绍Animation介绍.简介Animation为Android提供了一系列的动画效果:旋转、缩放、移动、淡入淡出,这些动画效果可以应用于绝大多数控件。.分类Animation可分为两类:TweenedAnimations:渐变动画,具体就是旋转、缩放、移动、淡入淡出效果。Frame-by-FrameAnimations:将一系列Drawable序列一次播放,类似于电影模式,常用来进行定时更新背景等操作。.实现方法Animation有两种实现方法:在xml文件中实现,优点是复用性好,可维护性好,多个控件可以使用同一个xml文件。缺点是由于xml文件不进行编译,所以排错比较难。在代码中实现,优点是排错很方便,缺点是重复代码多,可复用性低。Intent介绍Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用Intent:直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context,Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。间接Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理止匕Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。5/30重庆理工大学综合课程设计 营养食谱系统如果Intent中的数据不是content:类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme(比如http:或者mailto:)进行匹配。同上,Intent的scheme必须出现在目标组件的scheme列表中。如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。SharedPreferences介绍SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/〈包名〉/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:一、根据Context获取SharedPreferences对象二、利用edit()方法获取Editor对象。三、通过Editor对象存储key-value键值对数据。四、通过commit。方法提交数据。SQLite介绍1、SQLite支持NULL、INTEGER.REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转成对应的五种数据类型。2、SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。3、但有一种情况例外:定义为INTEGERPRIMARYKEY的字段只能存储64位整数,当向这种字段中保存除整数以外的数据时,将会产生错误。4、另外,SQLite在解析CREATETABLE语句时,会忽略CREATETABLE语句中跟在字段名后面的数据类型信息,如下面语句会忽略name字段的类型信息:CREATETABLEperson(personidintegerprimarykeyautoincrement,namevarchar(20))Map介绍Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现:HashTable、HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它有一些扩展的方法,比如fistKey(),6/30营养食谱系统重庆理工大学综合课程设计营养食谱系统lastKey()等。HashMap和Hashtable的区别。HashMap允许空(null)键(key)或值(value),由于非线程安全,效率上可能高于Hashtable。Hashtable不允许空(null)键(key)或值(value)。simpleAdapter介绍使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(vlist.xml),HashMap的title和info,img。布局文件的组件id,title,info,img。布局文件的各组件分别映射到HashMap的各元素上,完成适配。7/30

营养食谱系统重庆理工大学综合课程设计营养食谱系统第3章需求分析系统在开发设计之前首先就应该进行系统的需求分析,调查系统的使用对象,为了满足使用系统的用户的要求,设计出合理、完善的系统。确定该系统功能如下:①本系统可分为默认用户登录和管理员登录②营养搭配模块。查看食物的营养搭配,管理员可以添加,删除等操作。③美食烹饪模块。查看菜肴菜谱,管理员可以添加,删除等操作。④我有食谱模块。默认用户可以把自己的菜谱分享出来,管理员可以查看该用户上传的食谱,最后可以再发布出来。⑤关于模块。简介该系统相关内容。功能结构图通过仔细的调查分析,得出本系统的功能结构如图3.1所示图3.1营养食谱系统功能结构图图3.1营养食谱系统功能结构图管理员操作管理员登录后,进入每个界面内。可以对该界面所有数据进行操作,能够搜索ID对其进行删除。删除全部数据和添加新的营养搭配和菜谱做法。可以查看,删除用户上传的食谱。8/30重庆理工大学综合课程设计营养食谱系统第4章系统设计如图4.1所示各模块关系布局如图4.1所示根据需求分析,拟定系统各模块的关系,布局。登录主菜单主菜单关于关于我有食谱美食烹饪营养搭配上传查看食谱删除返回操作上传查看食谱删除返回操作添加,ID搜索,ID删除,全部删除,更新,返回功能图4.1营养食谱系统模块功能图9/30营养食谱系统重庆理工大学综合课程设计营养食谱系统系统实现整个流程图根据模块图,完成系统实现整个流程图。如图4.2所示:登录结束开始数据库2数据库3营养搭配:添加,删除,查找,刷新美食烹饪::添加,删除,查找,刷新我有食谱:添加,查看,删除数据库1营养搭配:查找,更新根据模块图,完成系统实现整个流程图。如图4.2所示:登录结束开始数据库2数据库3营养搭配:添加,删除,查找,刷新美食烹饪::添加,删除,查找,刷新我有食谱:添加,查看,删除数据库1营养搭配:查找,更新美食烹饪:查找,更新我有食谱:上传YES图4.2营养食谱系统实现流程图代码,布局文件结构有了整个实现系统思路,然后开始对每个界面进行布局,对每个Activity编写代码。对编写中会用到的资源进行定义。整个文件结构如图4.3所示:10/30意:卢INutritianMenuSystem鹿3src国意:卢INutritianMenuSystem鹿3src国,j_rcom.example.nutritionmenusystem.FT]About_Activrty.j-ava像;JjAdd_Activity.ja¥a,.Add_gour_Activrty.Javj梭,JjGo-urment_ActivrtyJava制.JjIntroduction_Activrty.javb>[T]LQginActMtF,'.jaYa.[T|Myrecepi_Activiiy.java[T]Myrecepi_Cont_Aetivity.java椽[j]MP_MainActivity,javst0Nutrition_Activity.j.ava勤!T|OpenHelperjava软KlOpenHelp-erl.java颔国0penHelp.erZ.java>[T]0perlnter_Activity,javat@People.java敕JjPecpl&l,java椽山Pecple2.jav.fl麴%res•&animcicu5tom_anim.xmlcfadejn.xml翰1^drawable瘟1^drawable-hdpiEEQEEQEEQQiQ0naadd.pngback_grourd.pngback,pngcomlast.pngdelall.pngjuddelone.png晒nnn0na0na0naEE0EE0icon-pngiconl.pngrefresh,pngsearch.pngtcovel.pngtcove2.pngtcoveB.pngtcove4.pngupload.png领巨?drawable-ldpi色会l-ayoutClabout_laynut.amlCl,add_gour_\.ay□ut.MmIidaddJjyout.Hml,C1gojrment_layout.MmI口go□rment.HimI卫irtrci'duction.HrTil|C1lay□ut_opinter.xmI।口Inp_m-aiiri.kitiICllogin-MimlClmy_recipe_layout.KmlCl,myrecepi_di:p3lyJayout.Kml缸nutritio-nal_layaut.KiriI|CInutrition日LikeI01menu窟&values|C1colors.xmliddimenE.xmlICl।strings.aml|C1style员xml般田valuer-tviifiOOdp服values-sw72J0dp-land箴Bvalues-vll像田values-vL4m&KmI,C1pecple.Kml,CAndroidMairbifest.xml图4.3代码,资源文件结构图11/30营养食谱系统重庆理工大学综合课程设计营养食谱系统营养食谱系统重庆理工大学综合课程设计营养食谱系统模块布局以及核心代码进入动画启动程序动画形式进入,该动画采用四张图片旋转进入,动画完成后自动跳转到主菜单人前爪立丫。进入动画布局如图4.4.1所示:A10392D2NMS启动程序动画形式进入,该动画采用四张图片旋转进入,动画完成后自动跳转到主菜单人前爪立丫。进入动画布局如图4.4.1所示:A10392D2NMSversion1O.DCopyright自2C13MMS..drb,Int.AllRights图4.4.1动画布局图在res/anim中添加两个.xml文件。定义动画进入各个时间,大小°Animation中引入动画的两个xml文件。再遍历TableLayout中的图片,采用Animation实例的spinin对象实现对图片的旋转进入。主要代码:privatevoidstartAnimating(){//题目进入采用anim.fade_in动画TextViewlogo1=(TextView)findViewById(R.id.textView1_use)Animationfade1=AnimationUtils.loadAnimation(thisR.anim.fade_ir);logo1.startAnimation(fade1);fade1.setAnimationListener(newAnimationListener(){publicvoidonAnimationEnd(Animationanimation){//动画结束进入主菜单页面startActivity(newIntent(NP_MainActivity.this,OperInter_Activity.class));NP_MainActivity.this.finish();12/30营养食谱系统重庆理工大学综合课程设计营养食谱系统publicvoidonAnimationRepeat(Animationanimation){)publicvoidonAnimationStart(Animationanimation){)));//图片进入动画Animationspinin=AnimationUtils.loadAnimatioKthisR.anim.custom_anin);LayoutAnimationControllercontroller=newLayoutAnimationController(spinin);//采用anim_custom_anim定义的动画进入TableLayouttable=(TableLayout)findViewById(R.id.TableLayout0);for(inti=0;i<table.getChildCount();i++){TableRowrow=(TableRow)table.getChildAt(i);//获取图片布局row.setLayoutAnimation(controller);))登录操作进入主菜单后,如果需要登录。点击登录进入登录界面如图4.4.2所示:运用SharedPreferences对数据的暂时存储,下次登录能保存上次登录的用户名。对账号,密码存放与res/xml下people文件中。如果输入数据与people下的账号,密码匹配则登录成功。采用startActivityForResult()在主菜单点击登录启动登录Activity并将值返回到主菜单界面。主要代码:XmlPullParserparser=resources.getXml(R.xml.people);//获取XML.people文件try(while(parser.next()!=XmlPullParser.END_DOCUMEN^{Stringpeople=parser.getName();//得出文件里面的NameStringname=null;Stringpassword=null;if((people!=null)&&people.equals(〃person〃))(intcount=parser.getAttributeCount();inti;for(i=0;i<count;i++){//遍历people中的attrName和attrValue13/30营养食谱系统重庆理工大学综合课程设计营养食谱系统StringattrName=parser.getAttributeName⑴;StringattrValue=parser.getAttributeValue⑴;if((attrName!=null)&&attrName.equals(〃name〃)){name=attrValue;}elseif((attrName!=null)&&attrName.equals(〃password〃))(password=attrValue;))if((name!=null)&&(password!=null)){//textView.setText(name.toString()+〃,〃+password.toString());if(name.equals(user)&&password.equals(secret)){//匹配成功comparesame=true;textView.setText(user+〃登录!〃);tv_wle.setText(〃欢迎〃);break;)))登录界面:StringuriString=editText_name.getText().toString()+","+editText_password.getText().toString();//将用户名和密码获取出来Uridata=Uri.parse(uriString);Intentresult=newIntent(null,data);//得出值,并返回到页面setResult(RESULT_OKresult);finish();14/30营养食谱系统重庆理工大学综合课程设计营养食谱系统L^1039202_NMS管理登录融号;密码!登录图4.4.2管理登录界面ListView操作及数据库运用对每一个营养搭配具体内容显示在ListView中的Item中。如图4.4.3所示:对于在每个Item中显示的内容有按照自己定义的格式来显示,如图4.4.4所示:首先要建立一个数据库OpenHelper来存放所有的关于营养搭配的数据。便在OpenHelper.java中写入关于数据库增,册U,查的方法。可以在Nutrition_Activity中直接调用来对数据库的操作。ListView中的图片显示是根据输入的图片名称通过getImageByReflect()方法反射出drwable下的图片。在Item显示格式要运用SimpleAdapter适配器定义。然后通过HaspMap()把数据取出来绑定到SimpleAdapter显示在ListView中。然后采用OnItemClickListener()监听点击listview中Item的事件。点击跳转页面并获取该Item中的一些值传入到跳转的页面。代码如下:OpenHelper:privatestaticfinalStringDB_NAME="people.db";privatestaticfinalStringDB_TABLE="peopleinfo";privatestaticfinalintDB_VERSION=1;publicstaticfinalStringKEY_ID="_id";publicstaticfinalStringKEY_NAME="name";publicstaticfinalStringKEY_MATCH="match";publicstaticfinalStringKEY_PHOTOSRC="photosrc";publicstaticfinalStringKEY_INTRODUCTION="introduction";15/30营养食谱系统重庆理工大学综合课程设计营养食谱系统privateSQLiteDatabasedb;privatefinalContextcontext;privateDBOpenHelperdbOpenHelper;publicOpenHelper(Context_context){context=_context;)/**Closethedatabase*/publicvoidclose(){if(db!=null){db.close();db=null;))/**Openthedatabase*/publicvoidopen()throwsSQLiteException{dbOpenHelper=newDBOpenHelper(context,DB_NAME,null,DB_VERSION;try(db=dbOpenHelper.getWritableDatabase();}catch(SQLiteExceptionex){db=dbOpenHelper.getReadableDatabase();))//插入数据publiclonginsert(Peoplepeople){ContentValuesnewValues=newContentValues();newValues.put(KEY_NAMEpeople.Name);newValues.put(KEY_MATC,people.Match);newValues.put(KEY_PHOTOSR,people.PhotoSrc);newValues.put(KEY_INTRODUCTIO,people.Introduction);returndb.insert(DB_TABLEnull,newValues);)//显示所有数据publicPeople[]queryAllData(){Cursorresults=db.query(DB_TABLEnewString[]{KEY_IQKEY_NAME,16/30营养食谱系统重庆理工大学综合课程设计营养食谱系统KEY_MATCHKEY_PHOTOSR。KEY_INTRODUCTION),null,null,nullnull,null);returnConvertToPeople(results);)//显示一个数据publicPeople口queryOneData(longid){Cursorresults=db.query(DB_TABLEnewString口{KEY_IQKEY_NAME,KEY_MATCHKEY_PHOTOSRCKEY_INTRODUCTION),KEY_ID+〃=〃+id,null,null,null,null);returnConvertToPeople(results);)privatePeople口ConvertToPeople(Cursorcursor){intresultCounts=cursor.getCount();if(resultCounts==0||!cursor.moveToFirst()){returnnull;)People[]peoples=newPeople[resultCounts];for(inti=0;i<resultCounts;i++){//遍历所有数据peoples[i]=newPeople();peoples[i].ID=cursor.getInt(O);peoples[i].Name=cursor.getString(cursor.getColumnIndex(KEY_NAME));peoples[i].Match=cursor.getString(cursor.getColumnIndex(KEY_MATCH));peoples[i].PhotoSrc=cursor.getString(cursor

.getColumnIndex(KEY_PHOTOSRQ);peoples[i].Introduction=cursor.getString(cursor

.getColumnIndex(KEY_INTRODUCTIO));cursor.moveToNext();)returnpeoples;)//删除所有数据publiclongdeleteAllData(){returndb.delete(DB_TABLEnull,null);17/30营养食谱系统重庆理工大学综合课程设计营养食谱系统//显示一项数据publiclongdeleteOneData(longid){returndb.delete(DB_TABLEKEY_ID+〃=〃+id,null);)/**静态Helper类,用于建立、更新和打开数据库*/privatestaticclassDBOpenHelperextendsSQLiteOpenHelper{publicDBOpenHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){super(context,name,factory,version);)privatestaticfinalStringDB_CREATE="createtable"+DB_TABLE+〃("+KEY_ID+"integerprimarykeyautoincrement,"+KEY_NAME+-textnotnull,"+KEY_MATCH+"textnotnull,〃+KEY_PHOTOSRC+"textnotnull,-+KEY_INTRODUCTION+-textnotnull);";©OverridepublicvoidonCreate(SQLiteDatabase_db){_db.execSQL(DB_CREATE);)//©OverridepublicvoidonUpgrade(SQLiteDatabase_db,int_oldVersion,int_newVersion){_db.execSQL("DROPTABLEIFEXISTS"+DB_TABLE);onCreate(_db);))Nutrition_Activity:dbAdepter=newOpenHelper(this);dbAdepter.open();//打开数据库Buttonbtn_backOp=(Button)findViewById(R.id.BackOp);listView.setOnItemClickListener(itemclick);//listView调用点击事件btn_backOp.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewview){Intentintent=newIntent(Nutrition_Activity.this,18/30营养食谱系统重庆理工大学综合课程设计营养食谱系统OperInter_Activity.class);startActivity(intent);)));btn_ad.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewview){Intentintent=newIntent(Nutrition_Activity.this,Add_Activity.class);startActivity(intent);)));btn_search.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewview){intid=Integer.parseInt(editSearch.getText().toString());//获取id,并调用queryOneData();People口peoples=dbAdepter.queryOneData(id);if(peoples==null){Toast.makeText(getApplicationContext(),〃数据库中没有ID为〃+String.valueOf(id)+〃的数据〃,Toast.LENGTH_SHORT.show();return;)lists=newArrayList<Map<String,Object>>();//运用ArrayList<Map<String,Object>>()与HashMap<String,//Object>();//获取数据在ListView中显示getImageByReflect(peoples[0].PhotoSrc);//获取图片名称在Drawable反射出图片显示出来map=newHashMap<String,Object>();map.put(〃name〃,peoples[0].Name);map.put(〃match〃,peoples[0].Match);map.put(〃photosrc〃,resId);map.put(〃introduction〃,peoples[。].Introduction);lists.add(map);//将得出map放入lists中19/30重庆理工大学综合课程设计 营养食谱系统listitem();//调用listitem显示)));btn_deone.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewview){longid=Integer.parseInt(editSearch.getText().toString());longresult=dbAdepter.deleteOneData(id);//获取id显示该条信息Stringmsg=〃删除ID为〃+editSearch.getText().toString()+〃的数据〃+(result>0?〃成功〃:〃失败〃);Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT.show();)));btn_dela.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewview){//删除所有信息dbAdepter.deleteAllData();Stringmsg=〃数据全部删除〃;Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT.show();)));btn_ref.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){peoples=dbAdepter.queryAllData();if(peoples==null){Toast.makeText(getApplicationContext(),〃没有数据〃,Toast.LENGTH_SHORT.show();return;)lists=newArrayList<Map<String,Object>>();//运用ArrayListV和HashMap将数据显示出来20/30营养食谱系统重庆理工大学综合课程设计营养食谱系统for(inti=0;i<peoples.length;i++){map=newHashMap<String,Object>();//根据遍历和哈希把所有数据取出来在listView中显示getImageByReflect(peoples[i].PhotoSrc);//根据输入名称反射出图片map.put(〃name〃,peoples[i].Name);map.put(〃match〃,peoples[i].Match);map.put(〃photosrc〃,resId);map.put(〃introduction〃,peoples[i].Introduction);lists.add(map);)listitem();//使用listiem方式在ListView中显示)));)privatevoidgetImageByReflect(StringimageName){try(Fieldfield=Class.forName(〃com.example.nutritionmenusystem.R$drawable〃).getField(imageName);//获取该包下的drwable文件resId=field.getInt(field);//得出文件的id}catch(Exceptione){))privatevoidlistitem(){//定义SimpleAdapter适配器adapter=newSimpleAdapter(this,listsR.layout.nutritional_layou,newString[]{"photosrc","name","match"),newint[]{R.id.img,R.id.title,R.});21/30营养食谱系统重庆理工大学综合课程设计营养食谱系统//将定义的适配器绑定到ListView中listView.setAdapter(adapter);)OnItemClickListeneritemclick=newOnItemClickListener(){publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){Map<String,String>mapdata=(Map<String,String>)adapter.getItem(position);//点击listview中的选项,响应以下时间Stringname=(String)mapdata.get(〃name〃);Stringintroduction=(String)mapdata.get(〃introduction〃);Intentintent=newIntent(Nutrition_Activity.this,Introduction_Activity.class);intent.putExtra(〃name〃,name);intent.putExtra(〃introduction〃,introduction);int口id2={resId);intent.putExtra(〃resid〃,id2);//将这些值传入到Introduction_Activity中startActivity(intent);));22/30SubItem.3Item4SubItem.3Item4Su;nItern4^1039202_NMS2222222222Simun,i 处营养食谱系统重庆理工大学综合课程设计营养食谱系统Item&图4.4.3图4.4.3营养搭配界面图4.4.4Item显示格式点击GridView中Item响应事件对于gridView中的每个图片,点击会弹出一个对话框显示该菜谱的详细内容。也要对gridView中使用OnItemClickListener()监听事件。然后创建对话框便显示内容。主要代码:OnItemClickListeneritemclick=newOnItemClickListener(){//点击事件publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){Map<String,String>mapdata=(Map<String,String>)adapter1.getItem(position);//点击获取position,弹出对话框AlertDialog.BuildernormalDia=newAlertDialog.Builder(Gourment_Activity.this);//建立对话框Stringname=(String)mapdata.get(〃name〃);Stringmaterial=(String)ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论