綜合課程設(shè)計__營養(yǎng)食譜系統(tǒng)_第1頁
綜合課程設(shè)計__營養(yǎng)食譜系統(tǒng)_第2頁
綜合課程設(shè)計__營養(yǎng)食譜系統(tǒng)_第3頁
綜合課程設(shè)計__營養(yǎng)食譜系統(tǒng)_第4頁
綜合課程設(shè)計__營養(yǎng)食譜系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、重慶理工大學(xué)綜合課程設(shè)計營養(yǎng)食譜系統(tǒng) 綜合課程設(shè)計報告題目 營養(yǎng)食譜系統(tǒng) 二級學(xué)院 計算機科學(xué)與工程學(xué)院 專 業(yè) 網(wǎng)絡(luò)工程 學(xué) 號 11003090202 姓 名 鄧中斌 時 間 2013-9-22 目錄第1章 緒論31.1 項目背景知識介紹31.2 項目的意義和主要內(nèi)容3第2章 相關(guān)技術(shù)介紹52.1 Animation介紹52.2 Intent介紹52.3 SharedPreferences介紹62.4 SQLite介紹62.5 Map介紹62.6 simpleAdapter介紹7第3章 需求分析83.1 功能結(jié)構(gòu)圖83.2 管理員操作8第4章 系統(tǒng)設(shè)計94.1 各模塊關(guān)系布局94.2 系統(tǒng)

2、實現(xiàn)整個流程圖104.3 代碼,布局文件結(jié)構(gòu)104.4 模塊布局以及核心代碼124.4.1 進入動畫124.4.2 登錄操作134.4.3 ListView操作及數(shù)據(jù)庫運用154.4.4 點擊GridView中Item響應(yīng)事件23第5章 系統(tǒng)實現(xiàn)255.1 系統(tǒng)運行截圖255.2 操作簡介28第6章 總結(jié)29參考文獻30第1章 緒論1.1 項目背景知識介紹生物從低級到高級,從單細胞生物到高等動植物,從水中生活到陸地生活,所處的環(huán)境不同,生態(tài)各異。因此,所需要的養(yǎng)料和攝取養(yǎng)料的方式也不相同。生物所需的養(yǎng)料,其元素組成,大量的有氫、氧、氮和碳。這些是組成生物體的蛋白質(zhì)和儲存能量的主要元素。此外,還

3、有少量的硫、磷、鈣、鎂、鉀、鈉、氯和多種微量元素。有些微量元素在生物體內(nèi)僅有痕量。含有葉綠素和紫色素的植物和微生物能夠經(jīng)過根、葉或細胞膜直接從外界吸取這些無機化合物,并利用日光的能量來合成自身生長、發(fā)育等生命活動所需的有機物質(zhì),如蛋白質(zhì)、脂質(zhì)和碳水化合物(糖類)等。具有這樣營養(yǎng)方式的生物稱為自養(yǎng)型或無機營養(yǎng)型生物。另一些生物(如動物)不能直接利用外界的無機物合成自身生命所需的有機物,必須從自養(yǎng)型生物或其它同類生物獲取養(yǎng)料。通過代謝過程將攝取的物質(zhì)轉(zhuǎn)變成自身所需的蛋白質(zhì)、脂質(zhì)、碳水化合物等有機物。具有這樣營養(yǎng)方式的生物則稱為異養(yǎng)型生物。營養(yǎng)學(xué)即是研究食物對生物的作用的科學(xué)。營養(yǎng)學(xué)在其發(fā)展的過程中

4、,不僅包括食物進入機體內(nèi)的變化,如參與生化反應(yīng)和結(jié)合到組織細胞中;還包括指導(dǎo)人們?nèi)绾芜x擇食物以保障機體的正常生長、發(fā)育與繁殖。所以營養(yǎng)學(xué)除了有其生物學(xué)意義外,還有其社會經(jīng)濟意義。營養(yǎng)素是維持正常生命活動所必需攝入生物體的食物成分?,F(xiàn)代營養(yǎng)學(xué)對于營養(yǎng)素的研究,主要是針對人類和禽畜的營養(yǎng)素需要。營養(yǎng)素分蛋白質(zhì)、脂質(zhì)、碳水化合物(糖類)、維生素和礦物質(zhì)(無機鹽)、水、纖維素7大類。例如每天吃的胡蘿卜,地瓜,大豆里面都含有豐富的維生素C。1.2 項目的意義和主要內(nèi)容“民以食為天”這是一個亙古不變的真理,人們的所有的社會活動必須建立在食的基礎(chǔ)上。沒有食的保障,所有的一切都是空談。但是隨著經(jīng)濟的猛速發(fā)展和

5、人民生活水平的日益提高。人們對于食也有著更高的要求,現(xiàn)在不僅僅是停留在一日三餐的基本追求了。他們更加講究每天吃的食物營養(yǎng)是否達標,怎么去吃自己才能攝取更好的營養(yǎng),怎樣去吃才能更好的保障自己的身體健康。同時也注意他們食物的多樣化。同時他們也更加注意到每一道菜的外在,不再是只要能吃飽就行了。他們對于評價一道菜,一頓飯的要求更高,評價點更多。營養(yǎng)搭配,色澤效果,口感等等要求!雖然基本人人都有這樣的要求,但是是不是人人都能做到這要的要求呢,答案顯然不是。必須肯定的是現(xiàn)在這個社會對食物要求高的人很多很多,但是對食物都很有研究的人,那就沒有那么多呢!很多人對于做飯就是一個難題,你在加上要菜品的多樣化,營養(yǎng)

6、達標化那就相當困難了。所以有一款這樣的應(yīng)用可以幫助一些對食物有一定要求但是自己又不會做的人是很有必要的。如果你什么時候心血來潮,想做一兩道菜犒勞下自己,但是有不能做得太寒酸,那么如果你有一款這個應(yīng)用。這個就再是問題了。它會成為老少皆宜,居家旅行的必備幫手。該應(yīng)用有兩個角色可以進入,一個是以管理員身份登錄進入。管理員進入可以對該系統(tǒng)進行一些操作。默認進入只能查看營養(yǎng)搭配和美食烹飪與上傳自己的食譜。不能對數(shù)據(jù)庫中的數(shù)據(jù)進行操作。有三個選項供選擇,一個是食物的營養(yǎng)搭配,一個是美食的菜譜以及用戶可以的菜譜上傳!第2章 相關(guān)技術(shù)介紹2.1 Animation介紹1.簡介 Animation為Androi

7、d提供了一系列的動畫效果:旋轉(zhuǎn)、縮放、移動、淡入淡出,這些動畫效果可以應(yīng)用于絕大多數(shù)控件。2.分類Animation可分為兩類:TweenedAnimations:漸變動畫,具體就是旋轉(zhuǎn)、縮放、移動、淡入淡出效果。Frame-by-FrameAnimations:將一系列Drawable序列一次播放,類似于電影模式,常用來進行定時更新背景等操作。3.實現(xiàn)方法Animation有兩種實現(xiàn)方法:在xml文件中實現(xiàn),優(yōu)點是復(fù)用性好,可維護性好,多個控件可以使用同一個xml文件。缺點是由于xml文件不進行編譯,所以排錯比較難。在代碼中實現(xiàn),優(yōu)點是排錯很方便,缺點是重復(fù)代碼多,可復(fù)用性低。2.2 Int

8、ent介紹Intent負責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。 因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。 在應(yīng)用中,我們可以以兩種形式來使用Intent: 直接Intent:指定了component屬性的Intent(調(diào)用setComponent(ComponentName)或者setClass(Context, Class)來指定)。通過指定具體的組件類,通知應(yīng)用啟動對應(yīng)的組件。間接Int

9、ent:沒有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。 對于直接Intent,Android不需要去做解析,因為目標組件已經(jīng)很明確,Android需要解析的是那些間接Intent,通過解析,將 Intent映射給可以處理此Intent的Activity、IntentReceiver或Service。Intent解析機制主要是通過查找已注冊在AndroidManifest.xml中的所有IntentFilter及其中定義的Intent,最終找到匹配的Intent。在這個解析過程中,An

10、droid是通過Intent的action、type、category這三個屬性來進行判斷的,判斷方法如下: 如果Intent指明定了action,則目標組件的IntentFilter的action列表中就必須包含有這個action,否則不能匹配; 如果Intent沒有提供type,系統(tǒng)將從data中得到數(shù)據(jù)類型。和action一樣,目標組件的數(shù)據(jù)類型列表中必須包含Intent的數(shù)據(jù)類型,否則不能匹配。 如果Intent中的數(shù)據(jù)不是content: 類型的URI,而且Intent也沒有明確指定它的type,將根據(jù)Intent中數(shù)據(jù)的scheme (比如 http: 或者mailto: ) 進行

11、匹配。同上,Intent 的scheme必須出現(xiàn)在目標組件的scheme列表中。 如果Intent指定了一個或多個category,這些類別必須全部出現(xiàn)在組建的類別列表中。比如Intent中包含了兩個類別:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目標組件必須至少包含這兩個類別。2.3 SharedPreferences介紹SharedPreferences是一種輕型的數(shù)據(jù)存儲方式,它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_pr

12、efs目錄下。SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過Editor對象實現(xiàn)。實現(xiàn)SharedPreferences存儲的步驟如下:一、根據(jù)Context獲取SharedPreferences對象二、利用edit()方法獲取Editor對象。三、通過Editor對象存儲key-value鍵值對數(shù)據(jù)。四、通過commit()方法提交數(shù)據(jù)。2.4 SQLite介紹1、SQLite支持 NULL、INTEGER、REAL(浮點數(shù)字)、TEXT(字符串文本)和BLOB(二進制對象)數(shù)據(jù)類型,雖然它支持的類型雖然只有五種,但實際上sqlite3也接受varc

13、har(n)、char(n)、decimal(p,s) 等數(shù)據(jù)類型,只不過在運算或保存時會轉(zhuǎn)成對應(yīng)的五種數(shù)據(jù)類型。2、SQLite最大的特點是你可以保存任何類型的數(shù)據(jù)到任何字段中,無論這列聲明的數(shù)據(jù)類型是什么。例如:可以在Integer字段中存放字符串,或者在布爾型字段中存放浮點數(shù),或者在字符型字段中存放日期型值。3、但有一種情況例外:定義為INTEGER PRIMARY KEY的字段只能存儲64位整數(shù), 當向這種字段中保存除整數(shù)以外的數(shù)據(jù)時,將會產(chǎn)生錯誤。4、另外, SQLite 在解析CREATE TABLE 語句時,會忽略 CREATE TABLE 語句中跟在字段名后面的數(shù)據(jù)類型信息,如

14、下面語句會忽略 name字段的類型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)2.5 Map介紹Map是一種把鍵對象和值對象進行關(guān)聯(lián)的容器,Map有兩種比較常用的實現(xiàn): HashTable、HashMap和TreeMap。HashMap也用到了哈希碼的算法,以便快速查找一個鍵,TreeMap則是對鍵按序存放,因此它有一些擴展的方法,比如fistKey(),lastKey()等。HashMap和Hashtable的區(qū)別。 HashMap允許空(null)鍵(key)或值(v

15、alue),由于非線程安全,效率上可能高于Hashtable。 Hashtable不允許空(null)鍵(key)或值(value)。2.6 simpleAdapter介紹使用simpleAdapter的數(shù)據(jù)用一般都是HashMap構(gòu)成的List,list的每一節(jié)對應(yīng)ListView的每一行。HashMap的每個鍵值數(shù)據(jù)映射到布局文件中對應(yīng)id的組件上。因為系統(tǒng)沒有對應(yīng)的布局文件可用,我們可以自己定義一個布局vlist.xml。下面做適配,new一個SimpleAdapter參數(shù)一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的組件

16、id,title,info,img。布局文件的各組件分別映射到HashMap的各元素上,完成適配。 第3章 需求分析系統(tǒng)在開發(fā)設(shè)計之前首先就應(yīng)該進行系統(tǒng)的需求分析,調(diào)查系統(tǒng)的使用對象,為了滿足使用系統(tǒng)的用戶的要求,設(shè)計出合理、完善的系統(tǒng)。確定該系統(tǒng)功能如下:本系統(tǒng)可分為默認用戶登錄和管理員登錄營養(yǎng)搭配模塊。查看食物的營養(yǎng)搭配,管理員可以添加,刪除等操作。美食烹飪模塊。查看菜肴菜譜,管理員可以添加,刪除等操作。我有食譜模塊。默認用戶可以把自己的菜譜分享出來,管理員可以查看該用戶上傳的食譜,最后可以再發(fā)布出來。關(guān)于模塊。簡介該系統(tǒng)相關(guān)內(nèi)容。3.1 功能結(jié)構(gòu)圖通過仔細的調(diào)查分析,得出本系統(tǒng)的功能結(jié)構(gòu)

17、如圖3.1所示登錄主菜單營養(yǎng)食譜系統(tǒng)營養(yǎng)搭配查看食譜查看上傳食譜 圖3.1 營養(yǎng)食譜系統(tǒng)功能結(jié)構(gòu)圖3.2 管理員操作管理員登錄后,進入每個界面內(nèi)??梢詫υ摻缑嫠袛?shù)據(jù)進行操作,能夠搜索ID對其進行刪除。刪除全部數(shù)據(jù)和添加新的營養(yǎng)搭配和菜譜做法??梢圆榭?,刪除用戶上傳的食譜。第4章 系統(tǒng)設(shè)計4.1 各模塊關(guān)系布局根據(jù)需求分析,擬定系統(tǒng)各模塊的關(guān)系,布局。如圖4.1所示進入動畫主菜單主菜單營養(yǎng)搭配 美食烹飪 我有食譜 關(guān)于 營養(yǎng)搭配 美食烹飪 我有食譜 關(guān)于登錄添加,ID搜索,ID刪除,全部刪除,更新,返回功能ID搜索,刷新,返回操作上傳查看食譜刪除返回操作上傳食譜返回營養(yǎng)食譜系統(tǒng) 圖4.1營養(yǎng)食

18、譜系統(tǒng)模塊功能圖4.2 系統(tǒng)實現(xiàn)整個流程圖根據(jù)模塊圖,完成系統(tǒng)實現(xiàn)整個流程圖。如圖4.2所示:開始登錄數(shù)據(jù)庫1數(shù)據(jù)庫2數(shù)據(jù)庫3營養(yǎng)搭配:添加,刪除,查找,刷新營養(yǎng)搭配:查找,更新美食烹飪:查找,更新我有食譜:上傳美食烹飪:添加,刪除,查找,刷新我有食譜:添加,查看,刪除結(jié)束NOYES 圖4.2 營養(yǎng)食譜系統(tǒng)實現(xiàn)流程圖4.3 代碼,布局文件結(jié)構(gòu) 有了整個實現(xiàn)系統(tǒng)思路,然后開始對每個界面進行布局,對每個Activity編寫代碼。對編寫中會用到的資源進行定義。整個文件結(jié)構(gòu)如圖4.3所示: 圖4.3 代碼,資源文件結(jié)構(gòu)圖4.4 模塊布局以及核心代碼4.4.1 進入動畫啟動程序動畫形式進入,該動畫采用四

19、張圖片旋轉(zhuǎn)進入,動畫完成后自動跳轉(zhuǎn)到主菜單Activity。進入動畫布局如圖4.4.1所示: 圖4.4.1 動畫布局圖在res/anim中添加兩個.xml文件。定義動畫進入各個時間,大小。Animation中引入動畫的兩個xml文件。再遍歷TableLayout中的圖片,采用Animation實例的spinin對象實現(xiàn)對圖片的旋轉(zhuǎn)進入。主要代碼:private void startAnimating() / 題目進入采用anim.fade_in動畫TextView logo1 = (TextView) findViewById(R.id.textView1_user);Animation fa

20、de1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);logo1.startAnimation(fade1);fade1.setAnimationListener(new AnimationListener() public void onAnimationEnd(Animation animation) / 動畫結(jié)束進入主菜單頁面startActivity(new Intent(NP_MainActivity.this,OperInter_Activity.class);NP_MainActivity.this.finish();p

21、ublic void onAnimationRepeat(Animation animation) public void onAnimationStart(Animation animation) );/ 圖片進入動畫Animation spinin = AnimationUtils.loadAnimation(this,R.anim.custom_anim);LayoutAnimationController controller = new LayoutAnimationController(spinin);/ 采用anim_custom_anim定義的動畫進入TableLayout t

22、able = (TableLayout) findViewById(R.id.TableLayout01);for (int i = 0; i < table.getChildCount(); i+) TableRow row = (TableRow) table.getChildAt(i);/ 獲取圖片布局row.setLayoutAnimation(controller);4.4.2 登錄操作進入主菜單后,如果需要登錄。點擊登錄進入登錄界面如圖4.4.2所示:運用SharedPreferences對數(shù)據(jù)的暫時存儲,下次登錄能保存上次登錄的用戶名。對賬號,密碼存放與res/xml下pe

23、ople文件中。如果輸入數(shù)據(jù)與people下的賬號,密碼匹配則登錄成功。采用startActivityForResult()在主菜單點擊登錄啟動登錄Activity并將值返回到主菜單界面。主要代碼:XmlPullParser parser = resources.getXml(R.xml.people);/ 獲取XML.people文件try while (parser.next() != XmlPullParser.END_DOCUMENT) String people = parser.getName();/ 得出文件里面的NameString name = null;String pas

24、sword = null;if (people != null) && people.equals("person") int count = parser.getAttributeCount();int i;for (i = 0; i < count; i+) / 遍歷people中的attrName和attrValueString attrName = parser.getAttributeName(i);String attrValue = parser.getAttributeValue(i);if (attrName != null)&

25、;& attrName.equals("name") name = attrValue; else if (attrName != null)&& attrName.equals("password") password = attrValue;if (name != null) && (password != null) / textView.setText(name.toString()+","+password.toString();if (name.equals(user)&&a

26、mp; password.equals(secret) / 匹配成功comparesame = true;textView.setText(user + "登錄!");tv_wle.setText("歡迎");break;登錄界面:String uriString = editText_name.getText().toString() + ","+ editText_password.getText().toString();/ 將用戶名和密碼獲取出來Uri data = Uri.parse(uriString);Intent re

27、sult = new Intent(null, data);/ 得出值,并返回到頁面setResult(RESULT_OK, result);finish();圖4.4.2 管理登錄界面4.4.3 ListView操作及數(shù)據(jù)庫運用對每一個營養(yǎng)搭配具體內(nèi)容顯示在ListView中的Item中。如圖4.4.3所示:對于在每個Item中顯示的內(nèi)容有按照自己定義的格式來顯示,如圖4.4.4所示:首先要建立一個數(shù)據(jù)庫OpenHelper來存放所有的關(guān)于營養(yǎng)搭配的數(shù)據(jù)。便在OpenHelper.java中寫入關(guān)于數(shù)據(jù)庫增,刪,查的方法??梢栽贜utrition_Activity中直接調(diào)用來對數(shù)據(jù)庫的操作。

28、ListView中的圖片顯示是根據(jù)輸入的圖片名稱通過getImageByReflect()方法反射出drwable下的圖片。在Item顯示格式要運用SimpleAdapter適配器定義。然后通過HaspMap()把數(shù)據(jù)取出來綁定到SimpleAdapter顯示在ListView中。然后采用OnItemClickListener()監(jiān)聽點擊listview中Item的事件。點擊跳轉(zhuǎn)頁面并獲取該Item中的一些值傳入到跳轉(zhuǎn)的頁面。代碼如下:OpenHelper:private static final String DB_NAME = "people.db"private st

29、atic final String DB_TABLE = "peopleinfo"private static final int DB_VERSION = 1;public static final String KEY_ID = "_id"public static final String KEY_NAME = "name"public static final String KEY_MATCH = "match"public static final String KEY_PHOTOSRC = "

30、photosrc"public static final String KEY_INTRODUCTION = "introduction"private SQLiteDatabase db;private final Context context;private DBOpenHelper dbOpenHelper;public OpenHelper(Context _context) context = _context;/* Close the database */public void close() if (db != null) db.close();

31、db = null;/* Open the database */public void open() throws SQLiteException dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);try db = dbOpenHelper.getWritableDatabase(); catch (SQLiteException ex) db = dbOpenHelper.getReadableDatabase();/ 插入數(shù)據(jù)public long insert(People people) Conte

32、ntValues newValues = new ContentValues();newValues.put(KEY_NAME, people.Name);newValues.put(KEY_MATCH, people.Match);newValues.put(KEY_PHOTOSRC, people.PhotoSrc);newValues.put(KEY_INTRODUCTION, people.Introduction);return db.insert(DB_TABLE, null, newValues);/ 顯示所有數(shù)據(jù)public People queryAllData() Curs

33、or results = db.query(DB_TABLE, new String KEY_ID, KEY_NAME,KEY_MATCH, KEY_PHOTOSRC, KEY_INTRODUCTION , null, null, null,null, null);return ConvertToPeople(results);/ 顯示一個數(shù)據(jù)public People queryOneData(long id) Cursor results = db.query(DB_TABLE, new String KEY_ID, KEY_NAME,KEY_MATCH, KEY_PHOTOSRC, KE

34、Y_INTRODUCTION , KEY_ID + "=" + id,null, null, null, null);return ConvertToPeople(results);private People ConvertToPeople(Cursor cursor) int resultCounts = cursor.getCount();if (resultCounts = 0 | !cursor.moveToFirst() return null;People peoples = new PeopleresultCounts;for (int i = 0; i &

35、lt; resultCounts; i+) / 遍歷所有數(shù)據(jù)peoplesi = new People();peoplesi.ID = cursor.getInt(0);peoplesi.Name = cursor.getString(cursor.getColumnIndex(KEY_NAME);peoplesi.Match = cursor.getString(cursor.getColumnIndex(KEY_MATCH);peoplesi.PhotoSrc = cursor.getString(cursor.getColumnIndex(KEY_PHOTOSRC);peoplesi.I

36、ntroduction = cursor.getString(cursor.getColumnIndex(KEY_INTRODUCTION);cursor.moveToNext();return peoples;/ 刪除所有數(shù)據(jù)public long deleteAllData() return db.delete(DB_TABLE, null, null);/ 顯示一項數(shù)據(jù)public long deleteOneData(long id) return db.delete(DB_TABLE, KEY_ID + "=" + id, null);/* 靜態(tài)Helper類,用

37、于建立、更新和打開數(shù)據(jù)庫 */private static class DBOpenHelper extends SQLiteOpenHelper public DBOpenHelper(Context context, String name,CursorFactory factory, int version) super(context, name, factory, version);private static final String DB_CREATE = "create table " + DB_TABLE+ " ( " + KEY_ID

38、 + " integer primary key autoincrement, "+ KEY_NAME + " text not null, " + KEY_MATCH+ " text not null, " + KEY_PHOTOSRC + " text not null, "+ KEY_INTRODUCTION + " text not null);"Overridepublic void onCreate(SQLiteDatabase _db) _db.execSQL(DB_CREATE)

39、;/Overridepublic void onUpgrade(SQLiteDatabase _db, int _oldVersion,int _newVersion) _db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);onCreate(_db);Nutrition_Activity:dbAdepter = new OpenHelper(this);dbAdepter.open();/ 打開數(shù)據(jù)庫Button btn_backOp = (Button) findViewById(R.id.BackOp);listView.set

40、OnItemClickListener(itemclick);/ listView調(diào)用點擊事件btn_backOp.setOnClickListener(new OnClickListener() public void onClick(View view) Intent intent = new Intent(Nutrition_Activity.this,OperInter_Activity.class);startActivity(intent););btn_ad.setOnClickListener(new OnClickListener() public void onClick(V

41、iew view) Intent intent = new Intent(Nutrition_Activity.this,Add_Activity.class);startActivity(intent););btn_search.setOnClickListener(new OnClickListener() public void onClick(View view) int id = Integer.parseInt(editSearch.getText().toString();/ 獲取id,并調(diào)用queryOneData();People peoples = dbAdepter.qu

42、eryOneData(id);if (peoples = null) Toast.makeText(getApplicationContext(),"數(shù)據(jù)庫中沒有ID為" + String.valueOf(id) + "的數(shù)據(jù)",Toast.LENGTH_SHORT).show();return;lists = new ArrayList<Map<String, Object>>();/ 運用ArrayList<Map<String, Object>>()與 HashMap<String,/ Obje

43、ct>();/ 獲取數(shù)據(jù)在ListView中顯示getImageByReflect(peoples0.PhotoSrc);/ 獲取圖片名稱在Drawable反射出圖片顯示出來map = new HashMap<String, Object>();map.put("name", peoples0.Name);map.put("match", peoples0.Match);map.put("photosrc", resId);map.put("introduction", peoples0.Intr

44、oduction);lists.add(map);/ 將得出map放入lists中l(wèi)istitem();/ 調(diào)用listitem顯示);btn_deone.setOnClickListener(new OnClickListener() public void onClick(View view) long id = Integer.parseInt(editSearch.getText().toString();long result = dbAdepter.deleteOneData(id);/ 獲取id顯示該條信息String msg = "刪除ID為" + edit

45、Search.getText().toString() + "的數(shù)據(jù)"+ (result > 0 ? "成功" : "失敗");Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(););btn_dela.setOnClickListener(new OnClickListener() public void onClick(View view) / 刪除所有信息dbAdepter.deleteAllData();String msg = &

46、quot;數(shù)據(jù)全部刪除"Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(););btn_ref.setOnClickListener(new OnClickListener() public void onClick(View v) peoples = dbAdepter.queryAllData();if (peoples = null) Toast.makeText(getApplicationContext(), "沒有數(shù)據(jù)",Toast.LENGTH_SHORT).

47、show();return;lists = new ArrayList<Map<String, Object>>();/ 運用ArrayListV和HashMap將數(shù)據(jù)顯示出來for (int i = 0; i < peoples.length; i+) map = new HashMap<String, Object>();/ 根據(jù)遍歷和哈希把所有數(shù)據(jù)取出來在listView中顯示getImageByReflect(peoplesi.PhotoSrc);/ 根據(jù)輸入名稱反射出圖片map.put("name", peoplesi.N

48、ame);map.put("match", peoplesi.Match);map.put("photosrc", resId);map.put("introduction", peoplesi.Introduction);lists.add(map);listitem();/ 使用listiem方式在ListView中顯示);private void getImageByReflect(String imageName) try Field field = Class.forName("com.example.nutrit

49、ionmenusystem.R$drawable").getField(imageName);/ 獲取該包下的drwable文件resId = field.getInt(field);/ 得出文件的id catch (Exception e) private void listitem() / 定義SimpleAdapter適配器adapter = new SimpleAdapter(this, lists, R.layout.nutritional_layout,new String "photosrc", "name", "mat

50、ch" , new int R.id.img, R.id.title, R. );/ 將定義的適配器綁定到ListView中l(wèi)istView.setAdapter(adapter);OnItemClickListener itemclick = new OnItemClickListener() public void onItemClick(AdapterView<?> parent, View view, int position,long id) Map<String, String> mapdata = (Map<String, S

51、tring>) adapter.getItem(position);/ 點擊listview中的選項,響應(yīng)以下時間String name = (String) mapdata.get("name");String introduction = (String) mapdata.get("introduction");Intent intent = new Intent(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); 圖4.4.3 營養(yǎng)搭配界面 圖4.4.4 Item顯示格式4.4.4 點擊GridView中Item響應(yīng)事件對于grid

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論