




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Android應(yīng)用案例課程設(shè)計文件狀態(tài): 草稿 正式發(fā)布 正在修改項目名稱:我的云賬本文件標(biāo)識:android_app-1當(dāng)前版本:1.3.1作 者:魏燕學(xué) 號:31713109小組成員: 魏燕、潘正杰、趙德祥指導(dǎo)教師:史夢安完成日期:2015.7.2淮安信息職業(yè)技術(shù)學(xué)院 計算機(jī)與通信工程學(xué)院版 本 歷 史版本/狀態(tài)作者參與者起止日期備注魏燕馬子璇5代碼完成1.1.1魏燕馬子璇7修改云存儲的功能魏燕馬子璇7優(yōu)化界面以及功能魏燕馬子璇2015.7.2修改報告中的visio圖表格名稱各功能開發(fā)表序號功能子功能開發(fā)人員1主界面控制層(事件等)魏燕2顯示層馬子璇3賬信息添加數(shù)據(jù)層(Dao層)馬子璇4界
2、面控制層魏燕5顯示層馬子璇6服務(wù)端魏燕7賬信息查詢統(tǒng)計數(shù)據(jù)層(Dao層)魏燕8界面控制層馬子璇9顯示層魏燕10服務(wù)端馬子璇11賬類型查看及修改數(shù)據(jù)層(Dao層)馬子璇12界面控制層魏燕13顯示層馬子璇14服務(wù)端魏燕15賬信息刪除數(shù)據(jù)層(Dao層)魏燕16界面控制層馬子璇17顯示層魏燕18服務(wù)端馬子璇19關(guān)于魏燕、馬子璇一、前言記賬軟件記錄著各種數(shù)據(jù),如果軟件一不小心刪掉,所有數(shù)據(jù)就沒有,就會覺得很可惜?,F(xiàn)在云盤普遍都支持接入應(yīng)用。本系統(tǒng)主要用于賬信息的存儲,主要通過移動數(shù)據(jù)網(wǎng)絡(luò)或者WIFI,實現(xiàn)客戶與服務(wù)端的云存儲。客戶可以通過登錄查詢自己的賬戶信息。二、系統(tǒng)分析2.1系統(tǒng)開發(fā)遵循的標(biāo)準(zhǔn)或規(guī)范
3、2.1.1 統(tǒng)一的開發(fā)平臺移動端開發(fā)使用Eclipse+AndroidSDK;服務(wù)端開發(fā)采用Eclipse;移動端數(shù)據(jù)庫開發(fā)采用SQLsever。 統(tǒng)一技術(shù)規(guī)范總體上采用Java語言進(jìn)行客戶端及服務(wù)端的開發(fā),移動客戶端開發(fā)端采用Android開發(fā)技術(shù)規(guī)范,系統(tǒng)靜態(tài)及動態(tài)建模原則上要求使用UML技術(shù)規(guī)范。2.2“云備忘錄”功能設(shè)計本地備忘信息管理模塊通過該模塊的,用戶可以完成對備忘信息的管理,主要功能包括:1.備忘信息添加,用戶使用該功能可以完成對備忘信息的添加;2.備忘信息查詢及統(tǒng)計,用戶通過該功能完成對特定條件下的備忘信息的查詢及統(tǒng)計工作, 3.備忘信息查看及修改,用戶通過該功能可以查看特定
4、賬信息的明細(xì)并可對其進(jìn)行修改;4.備忘信息信息刪除,用戶可以刪除特定賬信息內(nèi)容(只做邏輯刪除,不做數(shù)據(jù)庫層的物理刪除,修改對應(yīng)記錄的status列數(shù)據(jù),0表示不可用,1表示可用)5.備忘信息提醒,用戶添加完信息設(shè)置是否提醒,使用這個功能,用戶可以在通知欄上看到提醒的信息。6.備忘信息更新,點擊更新按鈕,用戶可以更新狀態(tài),進(jìn)行聯(lián)網(wǎng),使信息同步到數(shù)據(jù)庫中。系統(tǒng)頂層用例圖如圖2.1:圖2.1系統(tǒng)用例圖消費信息模型類類圖如圖2.2:圖2.2 賬信息類圖.信息的云存儲的靜態(tài)模型圖智能手機(jī)通過WIFI或者移動數(shù)據(jù)訪問服務(wù)器,完成服務(wù)器與客戶端的數(shù)據(jù)傳輸。通過聯(lián)網(wǎng)登錄系統(tǒng),添加信息,修改、刪除信息,把信息發(fā)
5、送到服務(wù)端,進(jìn)行信息傳輸。如圖51網(wǎng)絡(luò)拓?fù)鋱D。 圖5-1網(wǎng)絡(luò)拓?fù)鋱D聯(lián)網(wǎng)以后,用戶可以添加、查詢、修改、刪除、更新備忘信息,即使本地信息刪除了,服務(wù)端還存有以前的信息,此功能可以防止信息的誤刪方便用戶的使用,詳細(xì)圖解參照下圖圖2-2系統(tǒng)用例圖。圖2.2 系統(tǒng)活動圖三、系統(tǒng)設(shè)計3.1系統(tǒng)采用的異步通信框架在Android版本以后,所有聯(lián)網(wǎng)操作不能在UI線程中進(jìn)行。必須在新建線程里進(jìn)行網(wǎng)絡(luò)連接,否則將會拋出“NetworkOnMainThreadException”異常。而在Android系統(tǒng)中只能在主線程(UI線程)中對UI組件進(jìn)行控制,如果通過子線程啟動網(wǎng)絡(luò)連接并對UI控件進(jìn)行修改,這就需要與U
6、I線程進(jìn)行通信??梢允褂肏andler類實現(xiàn)子線程與主線程的通信,為提高程序的健壯性,降低代碼的耦合度,設(shè)計SocketProcessor類(見附件1-6)處理異步通信請求。3.2系統(tǒng)初始化系統(tǒng)采用mysql數(shù)據(jù)庫記錄備忘信息,在移動端啟動前需要進(jìn)行數(shù)據(jù)庫及數(shù)據(jù)表等的初始化。3.1 系統(tǒng)初始化的動態(tài)模型啟動程序后,獲取備忘信息,生成備忘信息對象,存儲在本地。如果聯(lián)網(wǎng)后,把信息序列化之后發(fā)送給服務(wù)端,服務(wù)端接收后,反序列化存儲到云端,通過客戶端解析響應(yīng)判斷有沒有存儲成功。相關(guān)活動圖如圖3.1系統(tǒng)活動圖:圖 3.1 系統(tǒng)活動圖3.2 數(shù)據(jù)庫設(shè)計系統(tǒng)采用SQLite關(guān)系型數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫設(shè)計,由系統(tǒng)
7、對象關(guān)系分析可知,系統(tǒng)數(shù)據(jù)存儲結(jié)構(gòu)如表一所示。表1 備忘信息表表名note_info列名數(shù)據(jù)類型非空描述主鍵外鍵idint主鍵,自增Ynamevarchar(50)Y默認(rèn)備忘名稱datevarchar(50)Y日期workvarchar(50)Y內(nèi)容ischeckintegerYTrue成功false失敗statusintegerY0標(biāo)識不可用,1標(biāo)識可用 3.3 主界面設(shè)計由于采用移動手持終端作為應(yīng)用程序載體,為提高人機(jī)交互效果,主界面宜采用扁平化設(shè)計??梢愿雍唵沃苯拥膶⑿畔⒑褪挛锏墓ぷ鞣绞秸故境鰜?,減少認(rèn)知障礙的產(chǎn)生。主界面設(shè)計如圖3.4所示。 圖3.4 主界面設(shè)計3.5 云同步設(shè)計由于
8、用戶在未聯(lián)網(wǎng)狀態(tài)時,賬信息保存在本地數(shù)據(jù)庫中,服務(wù)器是收不到任何數(shù)據(jù),所以我們設(shè)計云同步功能,該功能主要是把本地數(shù)據(jù)與服務(wù)端同步,以便用戶后期管理。采用的協(xié)議采用網(wǎng)絡(luò)通信協(xié)議,運用第三方輔助工具JSON包,對數(shù)據(jù)序列化反序列化進(jìn)行傳輸。利用MyData類控制各種數(shù)據(jù)傳輸。MyData類見圖3.5.圖3.5MyData類圖云同步動態(tài)模型獲取本地數(shù)據(jù)庫數(shù)據(jù),對每條數(shù)據(jù)進(jìn)行序列化,將序列化字符串發(fā)送到服務(wù)器,服務(wù)器接收字符串,進(jìn)行反序列化解析,并且與服務(wù)器中數(shù)據(jù)進(jìn)行對比,如果此條數(shù)據(jù)在服務(wù)器中沒有體現(xiàn),則保存在數(shù)據(jù)庫中,整個數(shù)據(jù)遍歷完畢,響應(yīng)本次操作,客戶端接收響應(yīng),同步完成。動態(tài)圖如下圖。圖 云同
9、步動態(tài)模型序列化反序列化關(guān)鍵代碼序列化:MyData<nodeInfo> response = new MyData<nodeInfo>();response.type = CommonData.ResponseType.ADD_notepad;response.data = ni;response.status = "ok"return JSON.toJSON(response).toString();反序列化:MyData<Object> md = JSON.parseObject(data, new TypeReference<
10、;MyData<Object>>(); String type = md.type;System.out.println("接收請求:"+data);/由于不知道何種請求,首選將JSON字符串反序列化為MyData<Object>對象/判斷請求類型,根據(jù)不同的請求類型,重新反序列化JSON字符串四、系統(tǒng)實現(xiàn)4.1 數(shù)據(jù)庫存儲系統(tǒng)的實現(xiàn)本存儲系統(tǒng)利用Andorid的SQLSever關(guān)系型數(shù)據(jù)庫存儲系統(tǒng)實現(xiàn)。其數(shù)據(jù)表字段及數(shù)據(jù)表創(chuàng)建等核心代碼如下所示:數(shù)據(jù)存儲代碼:客戶端: /賬信息數(shù)據(jù)表相關(guān)字段public final String TNAME_
11、1 = "account_info"public final String COLUMN1_1 = "account_type"public final String COLUMN2_1 = "account"public final String COLUMN3_1 = "account_remark"public final String COLUMN4_1 = "account_date"public final String COLUMN5_1 = "account_recor
12、d_time"public final String COLUMN6_1 = "type"/賬信息類型,1表示入賬,-1表示出賬public final String COLUMN7_1 = "status"/記錄狀態(tài),1表示可用,0表示不可用/賬信息數(shù)據(jù)表相關(guān)字段public final String TNAME_2 = "account_type_info"public final String COLUMN1_2 = "account_type_name"public final String CO
13、LUMN2_2 = "account_type_remark"public final String COLUMN3_2 = "account_type_time"/錄入到數(shù)據(jù)庫中的時間public final String COLUMN4_2 = "type"/賬類型信息對應(yīng)的類型,-1表示消費(出賬),1表示收入(入賬)public final String COLUMN5_2 = "status"/記錄狀態(tài)mSQLiteDB.execSQL("create table if not exists &
14、quot;+ TNAME_1 + " (" + _ID + " integer primary key AUTOINCREMENT,"+ COLUMN1_1 + " integer," + COLUMN2_1 + " text," + COLUMN3_1 + " text, "+COLUMN4_1+" date,"+ COLUMN5_1 + " time, "+COLUMN6_1+" integer,"+COLUMN7_1+"
15、 integer)");mSQLiteDB.execSQL("create table if not exists "+ TNAME_2 + " (" + _ID + " integer primary key AUTOINCREMENT,"+ COLUMN1_2 + " text," + COLUMN2_2 + " text," + COLUMN3_2 + " time," + COLUMN4_2 + " integer, "+ COLUMN5
16、_2 + " integer)");mSQLiteDB.close();服務(wù)端:public static boolean addAccountInfo(AccountInfo ai)new SMADao_up().upData("insert into account_type_info values(?,?,?,?,?,?,?,?,?)", new Objectnull,ai.getAccountType().getId(),ai.getAccount(),ai.getAccountRemark()+"",ai.getAccoun
17、tDate(),ai.getUserInfo().getId(),ai.getNativeId(),ai.getDeviceId(),ai.getStatus();return true;4.2 系統(tǒng)功能實現(xiàn)本地賬類型管理用戶登陸后可進(jìn)行在已有的賬類型基礎(chǔ)下可以添加賬信息。點擊主界面的查詢按鈕彈出對話框,可以按查詢條件查詢賬類型對應(yīng)的賬項目信息,選擇查看可以查看具體信息,并對他進(jìn)行修改。點擊刪除可進(jìn)行刪除。點擊添加按鈕可以添加賬項目。.1賬類型管理顯示效果用戶登錄后可以添加信息如4.1添加顯示效果,可以點擊主頁面的查詢按鈕彈出對話框,在對話框里進(jìn)行查詢和修改如4.1查詢顯示效果和4.1修改顯示
18、效果。 4.1添加顯示效果 4.1查詢顯示效果 4.1修改顯示效果4.2 .1.2相關(guān)核心代碼 chaxun.setOnClickListener(new OnClickListener() Overridepublic void onClick(View arg0) / TODO Auto-generated method stubString zhanglx = zhang_leixing.getSelectedItem().toString().trim();if(zhanglx.startsWith("出賬")queryAccountType_ = (Vector&
19、lt;AccountType>) new AccountDao(context).findAccountTypeByType(-1);ala .notifyDataSetInvalidated();else if(zhanglx.startsWith("入賬")queryAccountType_ = (Vector<AccountType>) new AccountDao(context).findAccountTypeByType(1);ala .notifyDataSetChanged(););/添加按鈕事件add.setOnClickListener
20、(new OnClickListener() Overridepublic void onClick(View arg0) / TODO Auto-generated method stubnew SetAddDialog(context).showDialog(););set_List.setOnItemLongClickListener(new OnItemLongClickListener() Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int pos, long arg3) fi
21、nal int posi = pos;/ TODO Auto-generated method stubnew ModifyChoosenDialog(context)public void itemEvent(DialogInterface arg0, int pos) / TODO Auto-generated method stubsuper.itemEvent(arg0, pos);CommonData.acc = queryAccountType_.elementAt(posi);String text = (String) this.itemspos;if (text.equals
22、("查看") new ZChakanDialog(context)public void onCancel(DialogInterface arg0) chaxun.performClick(); .showDialog(); else if(text.equals("刪除") new AlertDialog.Builder(context).setTitle("確認(rèn)刪除") .setPositiveButton("確定",/ 設(shè)置確定按鈕,第二個參數(shù)是傳事件對象new DialogInterface.OnClic
23、kListener() public void onClick(DialogInterface dialog,int whichButton) / 刪除操作if(CommonData.acc.getId() < 7)Toast.makeText(context,"刪除失敗,默認(rèn)類型無法刪除",Toast.LENGTH_LONG).show();else new AccountDao(context).deleteAccountType_(CommonData.acc.getId(); Toast.makeText(context,"刪除成功",To
24、ast.LENGTH_LONG).show();).setNeutralButton("取消", null).show();this.dismiss();.showSingleChoiceDialog();return false;);用戶注冊及登錄功能 將用戶的信息添加到數(shù)據(jù)庫中,先進(jìn)行用戶注冊,把用戶信息添加到數(shù)據(jù)庫中,注冊時若數(shù)據(jù)數(shù)據(jù)庫中沒有數(shù)據(jù)則注冊,然后點擊菜單中的登陸按鈕,就可以顯示登陸成功。然后就可以進(jìn)行用戶的信息添加查詢之類的操作。.1 用戶登錄動態(tài)模型 打開主頁面的菜單,點擊菜單中的注冊按鈕,就可以使用用戶注冊的功能,注冊成功之后,返回,點擊菜單中的登陸按
25、鈕,就可以成功的登陸。接著就可以添加信息,修改信息,生成請求對象,序列化反序列化之后,可以存儲到服務(wù)端。服務(wù)端通過客戶端的響應(yīng)判斷是否同步到服務(wù)端。如下圖,圖.1用戶登錄動態(tài)圖。活動動態(tài)圖: 圖.1用戶登錄動態(tài)圖.2 登錄界面效果1.進(jìn)入主頁面,打開注冊系統(tǒng),先進(jìn)行注冊,注冊成功之后點擊登陸按鈕就可以登陸了。如圖2-2-1所示。 圖2-2-1 主界面菜單 圖2-2-2注冊窗口 圖2-2-3登錄窗口 相.3關(guān)核心代碼/發(fā)送登錄請求的編碼如下所示:/獲取用戶數(shù)據(jù),封裝成json,發(fā)送String name = nameEdit.getText().toString().trim();String
26、pass = passEdit.getText().toString().trim();UserInfo user = new UserInfo();user.setUserName(name);user.setUserPass(pass);MyData<UserInfo> request = new MyData<UserInfo>();request.type = CommonData.RequestType.LOGIN;request.data = user;request.status = "ok"String request_ = JSON
27、.toJSON(request).toString();SocketProcessor.sendData(request_);/處理用戶登錄響應(yīng)的Handler編碼如下所示_response_login_handler = new Handler()Overridepublic void handleMessage(Message msg) / TODO Auto-generated method stubsuper.handleMessage(msg);String data = msg.getData().getString(SocketProcessor.KEY);MyData<U
28、serInfo> md_ = JSON.parseObject(data, new TypeReference<MyData<UserInfo>>();if(md_.status.equals("ok")CommonData.login_user = md_.data;userText.setText("用戶:"+md_.data.getNickName();loginDialog.dismiss();else if(md_.status.equals("notok")showToast("用戶
29、名、密碼錯誤!");服務(wù)端關(guān)鍵代碼:if(type.equals(CommonData.RequestType.LOGIN)/JSON.MyData<UserInfo> md_ = JSON.parseObject(data, new TypeReference<MyData<UserInfo>>();String name = md_.data.getUserName();String pass = md_.data.getUserPass();System.out.println("用戶名:"+name+" 密碼:
30、"+pass);UserInfo user = UserInfoDao.findUserInfoByNamePass(name, pass);if(user != null)/合法用戶MyData<UserInfo> response = new MyData<UserInfo>();response.type = CommonData.ResponseType.LOGIN;response.data = user;response.status = "ok"Server.userMap.put(socket, user);/將合法用戶記錄
31、下來return JSON.toJSON(response).toString();elseMyData<UserInfo> response = new MyData<UserInfo>();UserInfo u = new UserInfo();u.setId(-1); u.setNickName(""); u.setUserName(name); u.setUserPass(pass);response.type = CommonData.ResponseType.LOGIN;response.data = u;response.status
32、= "notok"return JSON.toJSON(response).toString();2、輸入用戶名和密碼后,可進(jìn)入本用戶對應(yīng)的系統(tǒng)。用戶名和密碼如表1所示,第一個為默認(rèn)的用戶,軟件自動添加該用戶名信息,用戶名和密碼區(qū)分大小寫:表1 系統(tǒng)初始用戶名密碼序號身份用戶名密碼1默認(rèn)用戶weiyan1232普通用戶用戶名密碼4.2.3賬信息云管理這個功能主要是用戶出入賬信息的管理,點擊主界面的添加按鈕,打開出入賬信息添加對話框,選擇賬類型(出賬還是入賬)及賬目項,輸入金額、出入賬日期以及備注等信息后點擊“添加”按鈕將信息錄入數(shù)據(jù)庫中。當(dāng)錄入成功后“添加”按鈕不能用,點擊
33、“繼續(xù)添加”按鈕,就可以繼續(xù)添加數(shù)據(jù)。查詢功能主要實現(xiàn)數(shù)據(jù)的查詢,點擊主界面的查詢按鈕,選擇查詢條件,出(如)賬,日期,類型,查詢方式,點擊查詢按鈕,長按查詢的信息可以出現(xiàn)一個對話框,點擊查看彈出對話框可以查看信息的主要內(nèi)容,并可以點擊修改按鈕對信息進(jìn)行修改。點擊刪除可以對數(shù)據(jù)進(jìn)行刪除。.1賬信息管理效果圖1.賬信息添加用戶可自己進(jìn)行信息的添加,添加操作方式在主界面中點擊添加圖片按鈕如圖3-1-1所示,進(jìn)入添加界面,如圖3-1-2所示,輸入數(shù)據(jù),添加成功后會顯示“添加成功”,如圖3-1-3所示。 圖3-1-1 主界面按鈕 圖3-1-2 添加對話框 圖3-1-3 添加成功2. 賬信息查詢查詢界面
34、,點擊查詢按鈕,如圖3-2-1所示,查詢符合條件的數(shù)據(jù),查詢結(jié)果進(jìn)入如圖3-2-2所示。 圖3-2-2主界面 圖3-2-2 查詢 圖3-2-3查詢結(jié)果3. 賬類型設(shè)置 點擊主界面設(shè)置按鈕,如圖3-3-1所示,進(jìn)入賬類型管理界面,點查詢按鈕查詢賬類,查詢結(jié)果為3-3-2所示。 圖3-3-1 主界面 圖3-3-2 賬類型查詢結(jié)果.2核心代碼:addBtn.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stub/獲取賬信息String
35、zhangType = typeSpinner.getSelectedItem().toString();AccountType at = (AccountType)accountTypeSpinner.getSelectedItem();/int accountId = (AccountType)accountTypeSpinner.getSelectedItem().getId();/出入賬類型idString account = accountEdit.getText().toString().trim();String accountRemark = accountRemarkEdit
36、.getText().toString().trim();String date = dateEdit.getText().toString().trim();if(account.length() = 0)Toast.makeText(context, "信息不完整", Toast.LENGTH_LONG).show();return;AccountInfo ai = new AccountInfo();ai.setAccount(account); ai.setAccountDate(date);ai.setAccountRecordTime(CommonUtils.g
37、etTime(new Date();ai.setAccountRemark(accountRemark); ai.setStatus(1);if(zhangType.trim().startsWith("出賬")ai.setType(-1);/ai.setAccountType(new AccountDao(context).findAccountTypeById(accountId);ai.setAccountType(at);else if(zhangType.trim().startsWith("入賬")ai.setType(1);/ai.setA
38、ccountType(new AccountDao(context).findAccountTypeById(accountId);ai.setAccountType(at);/生成賬信息本地id(移動端SQLite)String id = new AccountDao(context).addAccountInfo(ai);if(id != null)Toast.makeText(context, "信息添加成功", Toast.LENGTH_LONG).show();addBtn.setEnabled(false);accountEdit.setEnabled(fals
39、e);accountRemarkEdit.setEnabled(false);conAddBtn.setEnabled(true);/判斷當(dāng)前用戶是否登錄,網(wǎng)絡(luò)是否連通if(SocketProcessor.isConnected() && CommonData.login_user!=null)ai.setId("1");/修改id防止服務(wù)端解析異常ai.setNativeId(id);ai.setDeviceId(CommonData.device_id);/添加手持設(shè)備號ai.setUserInfo(CommonData.login_user);MyDa
40、ta<AccountInfo> request = new MyData<AccountInfo>();request.type = CommonData.RequestType.ADD_ACCOUNT;request.data = ai;request.status = "ok"String request_ = JSON.toJSON(request).toString();SocketProcessor.sendData(request_););賬信息查詢:queryBtn.setOnClickListener(new OnClickListe
41、ner() Overridepublic void onClick(View v) / TODO Auto-generated method stubString date = dateEdit.getText().toString();/查詢?nèi)掌趇nt query = queryTypeSpinner.getSelectedItemPosition();/查詢方式,查詢的日期方式String zhanglx = zhanglxSpinner.getSelectedItem().toString().trim();/選擇的是出賬、入賬還是所有if(zhanglx.startsWith(&quo
42、t;所有")Log.e("zdx", date+"-"+query);queryAccountInfos = new AccountDao(QueryActivity.this).findAllAccountInfoByQueryType(date, query);Log.e("zdx", queryAccountInfos+"");ala.notifyDataSetInvalidated();else if(zhanglx.startsWith("出賬")AccountType at
43、_chosen = (AccountType)accountTypeSpinner.getSelectedItem();int typeId = at_chosen.getId();queryAccountInfos = new AccountDao(QueryActivity.this).findAccountInfoByAccountType(typeId, date, query, -1);Log.e("sss", queryAccountInfos.toString();ala.notifyDataSetInvalidated();else if(zhanglx.s
44、tartsWith("入賬")AccountType at_chosen = (AccountType)accountTypeSpinner.getSelectedItem();int typeId = at_chosen.getId();queryAccountInfos = new AccountDao(QueryActivity.this).findAccountInfoByAccountType(typeId, date, query, 1);ala.notifyDataSetInvalidated();double total = 0.0;for(int i=0;
45、i<queryAccountInfos.size();i+)AccountInfo ai = queryAccountInfos.elementAt(i);double account = Double.parseDouble(ai.getAccount();Log.e("zdx", ai+"");total += ai.getType()*account;totalText.setText("總計:"+total););賬信息查看修改:accountList.setOnItemLongClickListener(new OnI
46、temLongClickListener() Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int pos, long arg3) / TODO Auto-generated method stub/設(shè)置公共數(shù)據(jù)區(qū)的選中賬信息對象CommonData.choosenAccountInfo = (AccountInfo)queryAccountInfos.elementAt(pos);/Log.e("smax", CommonData.choosenAccountInfo
47、.getAccountRemark();new ModifyChoosenDialog(QueryActivity.this)Overridepublic void itemEvent(DialogInterface arg0, int pos) / TODO Auto-generated method stubsuper.itemEvent(arg0, pos);String text = (String)this.itemspos;if(text.startsWith("查看")new DetailDialog(QueryActivity.this)public voi
48、d onCancel(DialogInterface dialog) /*/String date = dateEdit.getText().toString();/查詢?nèi)掌趇nt query = queryTypeSpinner.getSelectedItemPosition();/查詢方式String zhanglx = zhanglxSpinner.getSelectedItem().toString().trim();/選擇的是出賬、入賬還是所有if(zhanglx.startsWith("所有")queryAccountInfos = new AccountDao
49、(QueryActivity.this).findAllAccountInfoByQueryType(date, query);ala.notifyDataSetInvalidated();else if(zhanglx.startsWith("出賬")AccountType at_chosen = (AccountType)accountTypeSpinner.getSelectedItem();int typeId = at_chosen.getId();queryAccountInfos = new AccountDao(QueryActivity.this).fin
50、dAccountInfoByAccountType(typeId, date, query, -1);ala.notifyDataSetInvalidated();else if(zhanglx.startsWith("入賬")AccountType at_chosen = (AccountType)accountTypeSpinner.getSelectedItem();int typeId = at_chosen.getId();queryAccountInfos = new AccountDao(QueryActivity.this).findAccountInfoB
51、yAccountType(typeId, date, query, 1);ala.notifyDataSetInvalidated();double total = 0.0;for(int i=0;i<queryAccountInfos.size();i+)AccountInfo ai = queryAccountInfos.elementAt(i);double account = Double.parseDouble(ai.getAccount();Log.e("zdx", ai+"");total += ai.getType()*accoun
52、t;totalText.setText("總計:"+total);/*/;.showDialog();else if(text.startsWith("刪除")new AccountDao(QueryActivity.this).deleteAccountInfo(CommonData.choosenAccountInfo.getId();this.dismiss();.showSingleChoiceDialog();return false;);服務(wù)端關(guān)鍵代碼:public class MyData<T>public String type;public T data;public String status;public class Test public static void main(String args) String json_data = ""data":"id":1,"userName":"abc","userPass":"123","type":"_request_login"&q
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度員工入股分紅協(xié)議:股權(quán)分紅與績效考核掛鉤
- 科技助力下的石墨制品質(zhì)量檢測與評估技術(shù)
- 二零二五年度農(nóng)機(jī)租賃與農(nóng)業(yè)廢棄物資源化利用項目合作協(xié)議
- 2025至2030年中國絨毛漿數(shù)據(jù)監(jiān)測研究報告
- 電商直播銷售從策劃到執(zhí)行的全過程解析
- 二零二五年度企業(yè)食堂綠色餐飲承包協(xié)議
- 二零二五年度服務(wù)業(yè)企業(yè)績效協(xié)議目標(biāo)責(zé)任書模板
- 二零二五年度購房貸款保險合同
- 二零二五年度桶裝水行業(yè)規(guī)范與自律合作協(xié)議
- 2025至2030年中國紫檀木紋石材數(shù)據(jù)監(jiān)測研究報告
- 大壩安全監(jiān)測系統(tǒng)驗收規(guī)范
- 2024年4月自考06088管理思想史試題
- 2024年南京鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 校園超市經(jīng)營投標(biāo)方案(技術(shù)方案)
- 康復(fù)醫(yī)院建筑設(shè)計標(biāo)準(zhǔn)
- 家具拆裝合同
- 社會穩(wěn)定風(fēng)險評估 投標(biāo)方案(技術(shù)方案)
- 高層建筑火災(zāi)撲救面臨問題及對策
- JTT791-2010 公路涵洞通道用波紋鋼管(板)
- JC-T 738-2004水泥強(qiáng)度快速檢驗方法
- 山東省春季高考技能考試-汽車專業(yè)必刷必練題庫(600題)
評論
0/150
提交評論