付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程名稱Android的數(shù)據(jù)庫操2、知識3、具體內(nèi)、包含頁技術(shù)的應(yīng)用(重點classBaseActivityextendsprivateButtonprivateTextViewclassBaseActivityextendsprivateButtonprivateTextView準備一個按鈕的數(shù)privateButton[]bottomBtns=new//準備目標的ActivityprivateClass[] Actvities={MainActiviQuestionListActivity.class,SearchActivity//準備按鈕不選中 數(shù)privateint[]allBottomsImgs={R.drawable.boR.drawable.bottom_02_a,//選中 數(shù)privateint[]allBottomsImgsSelected={R.drawR.drawable.bottom_02_b, 循環(huán)的i,為了 類中使privateintprotectedvoidonCreate(Bundle}protectedvoidinit(Stringtitle,int分別取得這些組settingBtn=(Button)findViewById(R.id.setttitleText=(TextView)===循環(huán)為底部按鈕加for(i=0;i<bottomBtns.length;i++)臨時定義幾個變量防止i一直自finalinttemp=if(i==selectedBtn)選中}else沒有選中加bottomBtns[i].setOnClickListener(newOnClpublicvoidonClick(Viewv)加入切換界面的操IntentIntentin=new}}}}}super.init("全部問題super.init("全部問題、數(shù)據(jù)庫操作(掌握如果要使用數(shù)據(jù)庫進行數(shù)據(jù)處理,首先需要建立一個OpenHelper的子類,等同于JDBC中編寫DataBaseConnection類publicclassDataBaseConnectionOpenHelper初始化固publicclassDataBaseConnectionOpenHelper初始化固定privatestaticfinalintDBVERSION=privatestaticfinalStringDBNAME=//為了方便使用,這里自己完成一個構(gòu)造publicDataBaseConnection(Contextctx)super(ctx,DBNAME,null,}publicDataBaseConnection(Contextcontext,Stringname,CursorFactoryfactory,intversion)super(context,name,factory,}publicvoid Database{當?shù)谝淮芜\行程序時需要在這里直接建出數(shù)據(jù)庫中的Stringsql="CREATETABLEnews("+ primarykey,"+ ,"+"content ,""pub_datetext ,"+ "")"http://執(zhí)行這條sql}publicvoid DatabaseintoldVersion,intnewVersion){Stringsql=null;if(oldVersion==1){sql="DROPTABLEnews";}sql="CREATETABLEnews(" primarykey,"+ ,"+"content ,""pub_datetext ,"+ ,"+ "+")";}}}使用時,只需要建立這個類,并取得了一個數(shù)據(jù)庫連接,就會自動執(zhí)行onCreate操作(僅限于第一次)publicclassNewsDAOUtilspublicstatic Databasedb,Map<String,Object>map){Stringsql="INSERTINTOnews(title,content,pub_date,type)VALUES調(diào)用添加操db.execSQL(sql,new{map.get("title"),map.get("content"),map.get("type")}publicstaticList<Map<String,Object>> Databasedb){調(diào)用查詢,接收一個返回結(jié)果Cursor類JDBC中的Stringsql=id,title,content,pub_date,typeFROMnews";Cursorc=db.rawQuery(sql,null);//循環(huán)將數(shù)據(jù)加入到ListList<Map<String,Object>>allValuesnewArrayList<Map<String,//移動查詢的游標,指向第一條數(shù) 如果沒有到最后,就繼續(xù)循while(!c.isAfterLast()){Map<String,Object>map=newHashMap<String,Object>();map.put("id",c.getInt(0));map.put("title",c.getString(1));map.put("content",c.getString(2));map.put("pubDate",c.getString(3));map.put("type",c.getInt(4));手工移動游}returnreturn}}測試時注意,日期類型最好自己進行格式化轉(zhuǎn)換,保存成String來存publicclassMainActivityextendsActivityprotectedvoidonCreate(BundlesavedInstanceStDataBaseConnectiondbc=new測試添加操Map<String,Object>map=newHashMap<StringSimpleDateFormatsf=newSimpleDateFormat("map.put("title"," map.put("content"," map.put("pubDate",sf.format(newDate()));map.put("type",3);測試列表操}}、+ListView分頁技術(shù)(重點publicpublicclassDataBaseConnectionOpenHelperprivatestaticfinalintDBVERSION=privatestaticfinalStringDBNAME=publicDataBaseConnection(Contextctx)super(ctx,DBNAME,null,}publicDataBaseConnection(Contextcontext,Stringname,CursorFactoryfactory,intversion)supersuper(context,name,factory,}publicvoidDatabasedb)Stringsql="CREATETABLEquestion(""question")"primarykey,"notnull,"+notnull"+}publicvoidDatabaseintoldVersion,intnewVersion)}}publicclasspublicclassQuestionDAOUtilspublicstaticvoidObject>map)Stringsql="INSERTINTOquestion(question,answer)VALUES(?,?)";newObject[]{map.get("question"),map.get("answer")});}publicstaticList<Map<String,Object>>listData(){List<Map<String,Object>>allValues=ArrayList<Map<String,Stringsql="SELECTid,question,answerFROMCursorc= while(!c.isAfterLast()){Map<String,Object>map=newHashMap<String,Object>();map.put("question",c.getString(0));publicpublicstaticvoiddeleteAllData()map.put("answer",c.getString(1));}return}}publicclassGlobalspublicstaticpublicclassGlobalspublicstaticDataBaseConnectionpublicstaticvoidinit(Activitya)dbc=new}}在IndexActivity中就可以將到的所有問題和答案保存到數(shù)據(jù)庫里。StringStringsql="DELETEFROM}////加入定時切換界面功Threadt=newThread(){publicvoidrun()定try//從SharedPreferences一個志SharedPreferencess=booleansavedFlag=s.getBoolean("flag",false);if(savedFlag)//之前保存過了,睡2秒后再跳這個類可以在程序中臨時保存變量,該變量會長期保存到某個xml文件中,使用時直 }else//之前沒保存過,或沒保存好重新保
先刪 數(shù)tryInputStreamis=BufferedReaderreader=
newStringline=null;StringBuilderquestion=newStringBuilderanswer=標志標識當前讀入的是問題是答booleanquestionFlag=while((line=reader.readLine())!=null){判斷讀入的是什("QUESTION_START_FLAG".equals(line))下面需要讀入問questionFlag=}else("ANSWER_START_FLAG".equals(line))下面需要讀入答questionFlag=}else("END_FLAG".equals(line))//將數(shù)據(jù)保存到數(shù)據(jù)庫//需要建立一個Map,保存問與答Map<String,Object>mapnewHashMap<String,-answer.length()-將問題和答案的Builder清question=
answer=問題或答案
}else//讀入的是數(shù)據(jù),需要加if(questionFlag){question.append(line+}else{answer.append(line+}}}新保存
//存一個標志,下次就不需要再Editore=s.edit();e.putBoolean("flag",true);提}catch(Exceptione){}}切換下一個Intentin=//當切換到下一個界面后,當前封關(guān)閉
}catch(Exceptione){}}}加入分頁功能,在中分頁語句使用LIMIT關(guān)鍵字即可實完成查詢當前頁數(shù)據(jù),以及錄數(shù)的方法publicstaticList<Map<String,Object>>listDataPage(intpageNo,intpageSize)List<Map<String,Object>>allValues=ArrayList<Map<String,Stringsql="SELECTid,question,answerFROMquestionLIMIT?,?";Cursorc=newString[]{(pageNo-1)*pageSize+"",pageSize+""}); while(!c.isAfterLast()){Map<String,Object>map=newHashMap<String,Object>();map.put("id",c.getInt(0));map.put("question"c.getInt(0、map.put("answer",c.getString(2));}return}publicstaticintgetAllCount()Stringsql="SELECTCOUNT(*)FROMquestion";Cursorc= intcount=c.getInt(0);return}在QuestionListActivity中,分別調(diào)用這兩個方法,來取得數(shù)據(jù)allValues=allValues=count=list.setOnScrollListener(newlist.setOnScrollListener(newpublicvoidintscrollState)if(scrollState==+visCount==total&&if(pageNo<allPages)可以查詢下一頁數(shù)//將新查詢的數(shù)據(jù)合并到原有的數(shù)據(jù)集通}else//已經(jīng)查詢了全部的數(shù)據(jù),將footer刪if(list.getFooterViewsCount()>0){}}}}publicvoidonScroll(AbsListViewview,intvisibleItemCount,int visCount=visibleItemCount;total=totalItemCount;} android:orientation="vertical"><includelayout="@layout/header"android:orientation="horizontal">android:layout_weight="1"/>android:orientation="vertical">android:layout_weight="1.1"/>android:paddingTop="5dp">android:textSize="12sp"/>android:paddingRight="5dp"/>android:background="@drawable/search_btn"android:layout_weight="1.1"/>android:layout_weight="1"/><includelayout="@layout/footer"publicclasspublicclassSearchActivityBaseActivityprivateButtonprivateEditTextprotectedvoidonCreate(BundlesavedInstanceState){super.init("搜索問題searchBtn=(Button)searchText=(EditText)OnClickListener(){publicvoidonClick(Viewv){Stringtext=Intentin=in.putExtra("keyword",text);}}}}publicstaticList<Map<String,Object>>listDataPage(intpageNo,intpageSize,Stringkeyword){List<Map<String,Object>>allValues=newArrayList<Map<String,Stringsql="SELECTid,question,answerFROMquestionWHEREquestionLIKE?LIMIT?,?";Cursorc=newString[]{"%"+keyword+"%",(pageNo-1)*pageSize+"",pageSize+"" while(!c.isAfterLast()){Map<String,Object>map=newHashMap<String,Object>();map.put("id",c.getInt(0));map.put("question"c.getInt(0、map.put("answer",}return}publicstaticintgetAllCount(Stringkeyword){Stringsql="SELECTCOUNT(*)FROMWHEREquestionLIKE?";Cursorc=newString[]{"%"+keyword+"%"}); intcount=c.getInt(0);return}protectedvoidprotectedvoidsavedInstanceState)接收關(guān)鍵keyword=if(keyword==null){super.init("全部問題1);keyword="";}elsesuper.init("搜索keyword}list=(ListView)findViewById(R.id.list);allValues=查詢記錄count=、浮動窗口組件(掌握PopupWindow組件實現(xiàn)的是浮動窗口的功能,該組件需要通過new對象的形式來動態(tài)創(chuàng)建。但創(chuàng)建后也需要設(shè)置窗口里面的內(nèi)容的樣式,因此也需要其布局文件。在layout下建立一個文件 android:orientation="vertical">android:textSize="14sp"/>android:background="#ffffff"/>android:textSize="14sp"/>android:background="#ffffff"/>android:textSize="14sp"/>OnClickListener()OnClickListener()publicvoidonClick(Viewview)if(win==null){win=newPopupWindow(Globals.SCREEN_WIDTH/Globals.SCREEN_HEIGHT/6);Viewv=R.layout.window_layout,null);設(shè)置其布加入這按鈕分別取得這些組TextViewversionText=(TextView)TextViewauthText=(Text
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 日語培訓(xùn)評價制度
- 民辦培訓(xùn)學(xué)生管理制度
- 物業(yè)人才培養(yǎng)及培訓(xùn)制度
- 樣本庫人員培訓(xùn)制度
- 培訓(xùn)班合伙人制度
- 麻醉科三基三嚴培訓(xùn)制度
- 學(xué)校教室培訓(xùn)管理制度
- 公司海關(guān)法規(guī)培訓(xùn)制度
- 教職工全員培訓(xùn)制度
- 生產(chǎn)班組培訓(xùn)制度
- T-CDLDSA 09-2025 健身龍舞彩帶龍 龍舞華夏推廣套路技術(shù)規(guī)范
- DB35-T 2278-2025 醫(yī)療保障監(jiān)測統(tǒng)計指標規(guī)范
- GB/T 46561-2025能源管理體系能源管理體系審核及認證機構(gòu)要求
- GB/T 19566-2025旱地糖料甘蔗高產(chǎn)栽培技術(shù)規(guī)程
- 2025年浙江輔警協(xié)警招聘考試真題含答案詳解(新)
- 節(jié)能技術(shù)咨詢合同范本
- 去極端化條例解讀課件
- 水上拋石應(yīng)急預(yù)案
- 蘇州大學(xué)介紹
- 青少年法律知識競賽試題及答案
- 酒店消防安全應(yīng)急預(yù)案范本
評論
0/150
提交評論