久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区


曙海教育集團論壇3G手機技術專區Android應用開發 → Android 實例


  共有7176人關注過本帖樹形打印

主題:Android 實例

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
Android 實例  發帖心情 Post By:2010-12-3 13:02:17

ColaBox 登記收支記錄終于進入了復雜階段了.這個界面我也是查找了很多資料以及打開android的源代碼看了后才完成了,現在想來Google的開源真是明智的啊. gn7pIoN  
f'*HP%+Y  
從前面的登錄頁面跳轉進入添加賬單頁面.這個頁面主要是用來登記收支記錄的. R0{+Xd  
說白了就是往數據庫錄入明細. n0nkv[  
w Xfy,W  
表結構就是db.execSQL("CREATE TABLE bills (" Onby=Y o6  
"_ID INTEGER PRIMARY KEY," //id t4 h5R  
"fee integer," //費用 ,NKDEcw]  
"acctitemid integer," //賬目類型 h?fv :^vSi  
"userid integer," //使用者 r's4 -\  
"sdate TEXT," //日期 Bglh}_X  
"stime TEXT," //時間 M {_`X  
"desc TEXT" //備注 #W'jNX,h  
");"); $UgM7V$  
Q_qc_IcM y  
可以看到主要是錄入這些數據.首先是布置界面,我目前想到的用個tablelayout來布局 !2$O^ }6"  
最后布局就是如下圖這樣 Z Oyq{w!2  
#*1\h=bzmW  
圖1 gfFP-J3cN  
rW&8#&  
gNo.&G [  
/t(dhz&xN  
b-;+&Rb  
在這兒我首先需要設置賬目,前面我們已經初始化過賬目的數據. 8 U B?X  
賬目應該是一個ExpandableListActivity 2層的結構.需要從數據庫里面讀取.我在賬目后面放了一個editview 只讀沒有光標的.也就是在這兒不可錄入,在該editview的onclick事件里面我們打開賬目選擇界面.如下圖 tHJ#2X#Y.  
=k 2In_  
圖2 賬目選擇 0' @^PzX  
(B}+uI{  
k"LbB#Q  
ZYos.ay  
I;S[Ft8d  
在這個界面中點擊子節點就返回前面界面,把選擇的賬目傳遞過去.在這有個問題,如果用戶需要錄入的賬目沒有怎么辦? ik=~`3Zp0  
所以我這沒有用dialog方式而是用了ExpandableListActivity在這個界面中如果長點某個子節點就彈出管理賬目菜單, \`-/\N  
來維護賬目,如下圖所示: OQ;DqV  
圖3賬目選擇菜單示意 圖4 編輯賬目 ^z-e"  
`7zz&f9dDX  
,a9<\bd)  
HF" v \  
C\Qor3];  
-9Wx;u4]o  
kz\ D-b  
上面這些流程說起來很簡單,可是當我用andriod編寫時,遇到了很多問題,不過一個個都被我解決了,這正是編程的快樂所在. `VCU`Y  
關于ExpandableListActivity 大家可以參考android 里面apidemos 里面ExpandableList1,ExpandableList2,ExpandableList3 =/&ob%J)9]  
這里面對熟悉這個ui還是很有幫助的. 在ExpandableList2 里面就是從數據庫進行讀取的例子. 當然android里面那個我是沒太 ER~m &JI  
看明白因為他引用了import android.provider.Contacts.People; 聯系人部分的框架,而我目前對數據庫的操作和他不一樣,我都是直接 R ,-y  
sql訪問. Y O;N9wu3f  
但是你只要搞定2個cursor就ok了. Cursor groupCursor childCursor 其他都由SimpleCursorTreeAdapter幫你實現了. .<} (J#vC  
下面我們來看看如何使用SimpleCursorTreeAdapter t33/QW r  
//首先要實現groupcursor就是父節點游標,這個其實就是我的acctitem表的 ?W-J2tgss{  
//select * from accitem where pid is null 的結果 0 {#c  
Cursor groupCursor = billdb.getParentNode(); >MZWm6M8  
// Cache the ID column index ":E fR`A#  
mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow("_ID"); m,NUNd#)\  
// Set up our adapter 0j\?zt?  
mAdapter = new MyExpandableListAdapter(groupCursor, this, android.R.layout.simple_expandable_list_item_1, (~}IoQp>  
android.R.layout.simple_expandable_list_item_1, ]4wyuP,up  
new String[] { "NAME" }, // Name for group layouts zBD ?O!  
new int[] { android.R.id.text1 }, 8wz%e(  
new String[] { "NAME" }, // Lsa&A+fru  
new int[] { android.R.id.text1 }); Nr)v!z~y   
setListAdapter(mAdapter); spter35b[  
rUvjc4O}  
//然后我要實現childCursor 1M+o7HO.mG  
//其實就是select * from acctitem where id=pid 的結果 Wm>[5h%>  
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter { <y#-I%ed  
public MyExpandableListAdapter(Cursor cursor, Context context, 1xN6V-qk  
int groupLayout, int childLayout, String[] groupFrom, Pf&\2_H3s9  
int[] groupTo, String[] childrenFrom, int[] childrenTo) j9"uxw@  
{ A;~lG3j4  
super(context, cursor, groupLayout, groupFrom, groupTo, c\"t+/Z  
childLayout, childrenFrom, childrenTo); +vOlA#t%Z  
} b[&A,ZPh$@  
protected Cursor getChildrenCursor(Cursor groupCursor) { m(MPVY<X  
String pid = groupCursor.getLong(mGroupIdColumnIndex) ""; $="t7C9S  
// Log.v("cola","pid=" pid); ~aKM+KmtPH  
return billdb.getChildenNode(pid); /5cFa  
} 9G njJ  
} R@*mMWW,  
//我們看看Billdbhelper里面的cursor _dQVundH  
public Cursor getParentNode(){ QwF\s13  
return db.query("acctitem", new String[]{"_id", "name" }, "pid is null", null, null, null, "pid,_id"); ;. jnRPo";  
Md!L@gX6<  
} ,3 !D(&  
xd[GJ;xvs  
public Cursor getChildenNode(String pid){ 61qs`N=k  
Log.v("cola","run getchildenNode"); KDx~^OO  
return db.query("acctitem", new String[]{"_id", "name" }, "pid=" pid, null, null, null, "_id"); +{b!,D3sa*  
} SVr3OyzI  
只要這幾步一個2級的tree list就可以出現了. >j5,Z]  
上面其實才是剛開始,后面我們需要使用一個自定義的Dialog 類似于一個inputBox 因為我們新增賬目是需要輸入賬目的名稱. \BIa:}9O  
就是上面圖4表現的. e_eNtVq  
雖然alertDialog提供了很多方法,可以選擇list,treelist,radio, 可惜就是不能錄入text. aT9+] Ig  
這里我參考了api demos 里面的 DateWidgets1.java 和源代碼里面DatePickerDialog.java . KyQO>g{R  
我們可以從alertdialog 繼承.然后添加一個Editview 最后把數據返回出來.只要把上面我說的2個java看清楚了后處理起來就簡單了. [73 \jT  
主要是一個回調函數的用法.下面看代碼 B=0U^wL  
// <F>^ffwGH-  
public class Dialog_edit extends AlertDialog implements OnClickListener { nRP|Qt7>  
private String text = ""; *=sMJY9#jE  
private EditText edit; 6Kl%|VrJs  
private OnDateSetListener mCallback; //定義回調函數 cst}/8e  
private LinearLayout layout; -<g&U*/E  
public interface OnDateSetListener {//回調接口 9.:]eL  
void onDateSet(String text); 3/aK#TjK  
} >,Z[IAU.x5  
protected Dialog_edit(Context context, String title, String value, Ipp#{'Do  
OnDateSetListener Callback) { Qkvg 85  
super(context); xJ$/#UdP  
mCallback = Callback; <:n !qQS6  
TextView label = new TextView(context); { R`"Nk  
label.setText("hint"); FI(iqSJ6  
// setView(label); wHR# -g'  
edit = new EditText(context); > u!# 4  
edit.setText(value); 0| }]=XN^  
layout = new LinearLayout(context); Gp9:#L!  
layout.setOrientation(LinearLayout.VERTICAL); \C}_l+nY  
// LinearLayout.LayoutParams param = [S_qi,  
// new LinearLayout.LayoutParams(100, 40); k d9<&.y{  
// layout.addView(label, param); '* eeup  
LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(200, y,xJ5BI$  
50); ]ft}fU5C1  
layout.addView(edit, param2); .Y5o&at6s  
//添加edit !dV2:`|+  
setView(layout); ".7\>8A#a  
setTitle(title); 6qd?&.=r  
setButton("確定", this); P47 x-;  
setButton2("取消", (OnClickListener) null); /^sk y!  
} a7}O.NDf  
public void onClick(DialogInterface dialog, int which) { uqvS  
// Log.v("cola","U click which=" which); 2&zklXuo:  
text = edit.getText().toString(); -sxu7I  
Log.v("cola", "U click text=" text); hr W2#v  
if (mCallback != null) abw5Gz@Ag  
mCallback.onDateSet(text);//使用回調返回錄入的數據 @~bP|a  
} SQJ +C%   
} ^/I.? :+  
這樣我們就完成了自定義的dialog 我們可以使用它來新增和編輯賬目. 對于賬目的增刪改就是sql的事情了 LKBh{X0%(  
在這我又遇到一個問題就是我新增一個賬目后如何來刷新界面,從而反映賬目修改后的變化 S1#5oy2  
在這我開始以為只要使用getExpandableListView().invalidate(); 就可以了, =E62N7_`=  
因為我之前在ExpandableList1.java例子里面,使用它可以刷新界面. tgj 5l#P  
在那個例子里面我修改了數組后調用該方法,界面就刷新了,而在這SimpleCursorTreeAdapter就行不通了,我想 *D67&/g.  


支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

返回版面帖子列表

Android 實例








簽名
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
98国产高清一区| 亚洲午夜免费视频| 色88888久久久久久影院野外| 午夜久久电影网| 久久久www免费人成精品| 视频一区视频二区视频三区视频四区国产| 91在线国产观看| 成人av在线影院| 国产不卡视频在线观看| 国产福利一区二区三区在线视频| 日本不卡一二三| 蜜桃一区二区三区在线| 日本不卡的三区四区五区| 午夜精品久久久久久久久久久| 亚洲精品乱码久久久久久| 亚洲激情欧美激情| 亚洲最大成人综合| 五月天亚洲精品| 免费观看久久久4p| 精品一区二区三区免费观看| 久久99久久久久久久久久久| 精品亚洲国内自在自线福利| 国产一区二区三区黄视频| 国产黄色91视频| 国产剧情一区在线| 成人精品国产免费网站| www.66久久| 国产精品国产三级欧美二区| 国产精品久久波多野结衣| 狠狠色狠狠色综合人人| 日本视频一区二区不卡| 久久久不卡影院| 欧美激情自拍偷拍| 中文字幕一区二区三区色视频 | 亚洲女同女同女同女同女同69| 亚洲三级在线看| 日韩成人伦理电影在线观看| 蜜桃久久久久久| 成人一级片网址| 97在线中文字幕| 日韩激情久久| 欧美日韩精品系列| 欧美精品一区二区不卡| 亚洲日本va午夜在线影院| 五月婷婷综合网| 高清国产午夜精品久久久久久| 国产91精品入口17c| 午夜精品一区二区三区在线观看| 欧美性色黄大片| 久久久久久日产精品| 一区二区三区日韩精品| 九色综合狠狠综合久久| 成人看片在线| 中文字幕免费在线不卡| 欧美一区二区三区四区久久| 国产午夜精品一区二区三区嫩草| 亚洲激情五月婷婷| 国产在线一区二区综合免费视频| 91老司机福利 在线| 亚洲三区四区| 亚洲精品一区二区三区四区高清| 国产一区高清视频| 欧美日韩精品是欧美日韩精品| wwwwww.欧美系列| 亚洲高清视频中文字幕| 粉嫩13p一区二区三区| 欧美日韩一区二区三区在线观看免| 欧美一区二区三区精美影视| 欧美一区二区三区在线电影| 又紧又大又爽精品一区二区| 国产成人免费视频| 99爱精品视频| 欧洲一区在线观看| 国产精品美女一区二区在线观看| 久久精品久久久精品美女| 国产欧美亚洲日本| 欧美精品视频www在线观看| 亚洲精品在线一区二区| 日韩不卡一区二区| 国产精品久久久一区二区三区| 欧美影院一区二区三区| 国产精品久久久久精k8| 国产精品888| 午夜午夜精品一区二区三区文| 欧美电影免费观看完整版| 偷窥国产亚洲免费视频| 99久久精品无码一区二区毛片| 欧美色图激情小说| 国产精品沙发午睡系列990531| 国产一区在线观看视频| 亚洲精品成人a8198a| 精品久久国产老人久久综合| 婷婷开心久久网| 久久久久一区二区三区| 久久综合九色欧美综合狠狠| 久色婷婷小香蕉久久| 人偷久久久久久久偷女厕| 国产偷国产偷亚洲高清人白洁| 狠狠色丁香久久婷婷综合_中 | 26uuu国产电影一区二区| 日韩av电影免费观看高清完整版在线观看 | 成人精品视频一区二区三区尤物| 一本到高清视频免费精品| 亚洲人一二三区| 国产精品一区二区三区在线 | 日本丶国产丶欧美色综合| 亚洲激情欧美激情| 国产伦精品一区二区三区免| 久久亚洲一级片| 成人av先锋影音| 日韩视频免费观看高清完整版在线观看| 五月天激情综合| 日本在线高清视频一区| 亚洲人成影院在线观看| 日韩欧美国产成人一区二区| 国产精品资源站在线| 欧美在线视频日韩| 日韩精品视频网站| 色噜噜色狠狠狠狠狠综合色一| 亚洲色图另类专区| 久久av免费一区| 亚洲素人一区二区| 免费精品视频一区| 亚洲九九爱视频| 欧美lavv| 亚洲一区免费视频| 亚洲欧美日韩另类精品一区二区三区| 亚洲欧美色图小说| 日韩欧美精品久久| 五月婷婷久久丁香| 欧美午夜一区二区| 国产一区二区三区视频在线播放 | 久久综合给合久久狠狠狠97色69| 高清日韩电视剧大全免费| 精品国产乱子伦一区| 97人人模人人爽视频一区二区 | 精品国产一区二区三区四区精华| 欧美一级高清片| 成人精品视频一区| 日韩一二三区不卡| 国产成人免费视频精品含羞草妖精 | 欧美性受xxxx| 国产精品一区二区在线观看不卡| 制服丝袜亚洲播放| 99久久伊人精品| 中文字幕第一页久久| 欧美日韩一区二区三| 奇米一区二区三区av| 91精品欧美综合在线观看最新 | 日韩精品五月天| 制服丝袜激情欧洲亚洲| 99精品视频一区| 中文字幕一区二区三区在线不卡 | 91在线观看成人| 国产欧美精品一区二区色综合| 国内一区在线| 午夜精品久久久久久久久久久| 欧洲生活片亚洲生活在线观看| 国产一区二区三区免费| 久久久久国产精品厨房| 欧美一区国产一区| 久久国产精品色婷婷| 欧美精品一区二区三区蜜桃视频| 粉嫩av免费一区二区三区| 一区二区三区中文在线观看| 欧美亚洲国产一区二区三区| 北条麻妃一区二区三区| 夜夜嗨av一区二区三区网页 | 国产在线精品一区二区| 久久欧美中文字幕| 日韩av不卡播放| 国产精品正在播放| 中文字幕一区视频| 欧美日精品一区视频| 99高清视频有精品视频| 日韩黄色片在线观看| 久久男人中文字幕资源站| 亚洲乱码一区二区三区三上悠亚| 国产精品一级二级三级| 亚洲欧美激情插 | 国产精品福利av| 欧美四级电影网| 国产精品二区在线观看| 琪琪久久久久日韩精品| 国产日韩av一区| 欧美性三三影院| 国产综合 伊人色| 国产一区视频在线看| 亚洲欧洲综合另类| 欧美精品免费视频| 欧美三日本三级少妇三99| 成人中文字幕合集| 亚洲成人免费在线观看| 精品动漫一区二区三区在线观看 | 欧美日韩精品二区第二页| 俄罗斯精品一区二区三区| 蜜桃视频免费观看一区| 亚洲人成伊人成综合网小说| 久久这里只有精品6| 欧美xxxx老人做受|