14大話企業(yè)級(jí)an開發(fā)事務(wù)_第1頁
14大話企業(yè)級(jí)an開發(fā)事務(wù)_第2頁
14大話企業(yè)級(jí)an開發(fā)事務(wù)_第3頁
14大話企業(yè)級(jí)an開發(fā)事務(wù)_第4頁
14大話企業(yè)級(jí)an開發(fā)事務(wù)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321大話企業(yè)級(jí) Android 開發(fā)·第十四部分本說明及大話企業(yè)級(jí) Android 開發(fā)是國(guó)士為了方便中國(guó)Android 開發(fā)者,推動(dòng) Android 企業(yè)級(jí)應(yīng)用開發(fā),特投入大量心血撰寫的書籍,并在網(wǎng)絡(luò)上免費(fèi)發(fā)布,希望為移動(dòng)互聯(lián)網(wǎng)和智能貢獻(xiàn)綿薄之力!所有相關(guān)文檔版權(quán)均屬國(guó)士所有。參考本是由國(guó)士文檔,綜合市面相關(guān)書籍,經(jīng)過充分的吸收消化,結(jié)合開發(fā)實(shí)踐的一部,為了本及早與廣大讀者同仁見面、,特采用定稿一部分就發(fā)布一部分的連載方式發(fā)布。讀者可以在本博客獲取最新內(nèi)容。國(guó)士。本文檔受有關(guān)法律的,將此文檔及其衍生以標(biāo)準(zhǔn)(紙質(zhì))書籍形式保護(hù),對(duì)

2、本文檔內(nèi)容的任何同意的和行為,將導(dǎo)致相應(yīng)的法律責(zé)任。國(guó)士同意,任何團(tuán)體及個(gè)人不能用此由牟利,違者。但是:在不收取其他人費(fèi)用的前提下,您可以自此文檔,但必須保證信息、文檔及其自帶標(biāo)示的完整性。如果對(duì)該文檔有任何疑問或者建議,請(qǐng)進(jìn)入博客留言或者直接與國(guó)士(后附方式),我們會(huì)慎重參考您的建議并根據(jù)需要對(duì)本文檔進(jìn)行修改,以造福更 多開發(fā)者!l 大話企業(yè)級(jí) Android 開發(fā)的最新及完整內(nèi)容會(huì)在國(guó)士博客定期更新,請(qǐng)國(guó)士博客獲取更新內(nèi)容。: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321關(guān)于國(guó)士我們(國(guó)士)是一支專注于Android 平臺(tái)企業(yè)級(jí)

3、應(yīng)用開發(fā)的技術(shù)團(tuán)隊(duì),對(duì)等多多應(yīng)用有著深刻的理解及研發(fā)能力,致力服務(wù)于企業(yè)用戶。為音、門戶、SNS、電子商務(wù)等傳統(tǒng)網(wǎng)絡(luò)應(yīng)用向移動(dòng)互聯(lián)網(wǎng)發(fā)展提供解決方案和技術(shù)支持,為企業(yè)提供Android 培訓(xùn)服務(wù)等多種業(yè)務(wù)。我們尤其擅長(zhǎng)于提供從 Android 客戶端到服務(wù)端的一站式解決方案和技術(shù)支持,服務(wù)端可以采用 Java EE,也可以采用輕量級(jí)流行的 LAMP 技術(shù)體系。目前,研發(fā)出了比 KU6、優(yōu)酷更加強(qiáng)大和完善的 Android件,并在持續(xù)升級(jí)中。多客戶端軟目前,我們正在務(wù)實(shí)而卓有成效的與音等多、門戶、SNS、電子商務(wù)等傳統(tǒng)網(wǎng)絡(luò)服務(wù)商合作,發(fā)展迅速,渴望有志之士的加入,和我們一起為成為世界最好的 An

4、droid 軟件開發(fā)和咨詢、培訓(xùn)公司而奮斗,為移動(dòng)互聯(lián)網(wǎng)和智能貢獻(xiàn)力量!我們:guoshiandroid博客: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:658823211.1事務(wù)小安:到現(xiàn)在我們都沒有使用到事務(wù),但是在有一些情況下,比如要同時(shí)執(zhí)行好多條操作數(shù)據(jù)庫的語句,這些語句一起,或者一起失敗,此時(shí)就需要事務(wù)。如果我們需要事務(wù),那么該如何做呢?大致:?jiǎn)柕暮芎?,我們可以做一個(gè)測(cè)試你就會(huì)很白了。在原有的業(yè)務(wù)類Service中編寫一個(gè)saves()方法,這個(gè)方法執(zhí)行兩條SQL語句,這兩條SQL語句都是向表中添加數(shù)據(jù),在不加入事務(wù)的情況下,它的代碼如

5、下:public void saves() /測(cè)試事務(wù)Database db = databaseHelper.getWritableDatabase();db.execSQL("insert into db.execSQL("insert into(name, age) values(?,?)", new Object"張三",21);(name, age) values(?,?)", new Object"李四",22);在上述代碼中如果第二條SQL語句有錯(cuò)誤,第一條SQL語句也會(huì)之后就不同了,代碼如下:數(shù)據(jù),

6、但是加入事務(wù)public void saves()Database db = databaseHelper.getWritableDatabase();db.beginTransaction(); trydb.execSQL("insert 張三",21);db.execSQL("insert李四",22);/開始事務(wù)into(name, age)values(?,?)", new Object"into(name, age)values(?,?)", new Object"db.setTransactionSuc

7、cessful();/設(shè)置事務(wù)catch(Exception e)db.endTransaction();/事務(wù)結(jié)束標(biāo)志加入事務(wù)之后,如果第二條SQL語句有錯(cuò)誤,變?yōu)椋篸b.execSQL("insert intodddf(name,age)values(?,?)", new Object"李四: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321",22)其中表名“”變?yōu)榱恕癲ddf”,在ServiceTest測(cè)試類中加入testSaves()方法,測(cè)試是否可以加入數(shù)據(jù),代碼如下:public v

8、oid testSaves() throws Throwable/測(cè)試事務(wù)Service/傳入上下文Service = newService(this.getContext();Service.saves();執(zhí)行testSaves()方法測(cè)試,結(jié)果顯示如圖3-27圖3-27然后執(zhí)行testGetScrollData()方法,查看是否有數(shù)據(jù)“張三”,如圖3-28圖3-28我們發(fā)現(xiàn)“張三”的數(shù)據(jù)沒有入數(shù)據(jù)庫。有關(guān)數(shù)據(jù)庫的基本操作,現(xiàn)在我們已經(jīng)基本完成了,掌握前面的所有內(nèi)容之后,基本就可以解決今后在項(xiàng)目中有關(guān)數(shù)據(jù)庫的所有業(yè)務(wù)需求。: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) An

9、droid 開發(fā)本討論群:658823211.2使用 ListView 顯示表中的數(shù)據(jù)小安:大致博士,您把數(shù)據(jù)庫的操作和測(cè)試,都講完了,但是數(shù)據(jù)如何在上呢?有沒有像列表那類東西?大致:孺子可教。對(duì)于數(shù)據(jù)的顯示,我們可以這個(gè)時(shí)候就會(huì)用到 ListView 顯示控件,它的顯示風(fēng)格如圖 3-29圖3-29要實(shí)現(xiàn)上圖的效果,我們需要完成兩個(gè)內(nèi)容,第一個(gè)內(nèi)容是每一行的顯示風(fēng)格,ListView的每一行有三個(gè)元素,這個(gè)顯示風(fēng)格需要用做界面來完成。它的風(fēng)格和排版是我們定義的,ListView并不管,它將數(shù)據(jù)按照我們定義的風(fēng)格去一行行顯示。每一行的風(fēng)格要怎么做呢?我們可以使用布局文件來實(shí)現(xiàn),布局文件所在的文件

10、夾,如圖3-30: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321編寫item.xml文件創(chuàng)建一個(gè)布局文件的風(fēng)格和布局,如圖3-31item.xml,在layout文件下,它的作用就是定義ListView每一行: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321圖3-31創(chuàng)建之后,它的代碼如下:item.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xm

11、lns:android="android:layout_width="fill_parent" android:layout_height="wrap_content"><TextView android:layout_width="60px"android:layout_height="wrap_content""android:id="+id/></TextView><TextViewid"android:layout_width=&q

12、uot;160px"android:layout_height="wrap_content"android:layout_toRightOf="id/id": guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321android:layout_alignTop="id/ android:gravity="center_horizontal" android:id="+id/name"></TextView><TextVi

13、ew android:layout_width="wrap_content"id "android:layout_height="wrap_content" android:layout_toRightOf="id/name" android:layout_alignTop="id/name" android:id="+id/age"></TextView></RelativeLayout>編寫main.xml文件因?yàn)锳ctivity中,它顯示的主界面為m

14、ain.xml,所以我們打開main.xml,為它加入一個(gè)ListView組件,代碼如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"><ListView"a

15、ndroid:id="+id/List"android:layout_width="fill_parent" android:layout_height="wrap_content"></ListView></LinearLayout>這個(gè)時(shí)候我們就需要為L(zhǎng)istView綁定數(shù)據(jù),ListView中有一個(gè)setAdapter()方法設(shè)置適配器,也就是說數(shù)據(jù)是通過適配器傳入ListView的。在Android系統(tǒng)中我們常用的適配器有ArrayAdapter,我們這次用到的適配器SimpleAdapter,以

16、及采用結(jié)果集作為數(shù)據(jù)來源的適配器SimpleCursorAdapter。實(shí)例化一個(gè)SimpleAdapter,然后為它綁定數(shù)據(jù),代碼如下:Activity.javapublic classActivity extends Activity /* Called when the activity is first created. */private final static StringTAG="Activity": guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321private ListView listView;

17、privateOverrideServiceService;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);istView = (ListView)findViewById(R.id.List);List<HashMap<String, String>> data = new ArrayList<HashMap<String,String>>();HashMap<S

18、tring, String>title = new HashMap<String, String>();title.put("id","編號(hào)");title.put("name", "姓名");title.put("age", ""); data.add(title);SimpleAdapter adapter data, R.layout.new intR.id.= new SimpleAdapter(item, new String"Activ

19、ity.this,id", "name","age",id, R., R.id.age);listView.setAdapter(adapter);在實(shí)例化SimpleAdapter中的參數(shù): 第一個(gè)參數(shù):表示上下文。第二個(gè)參數(shù):表示內(nèi)部是繼承map結(jié)構(gòu)的list。第三個(gè)參數(shù):表示的id。第四個(gè)參數(shù):表示根據(jù)title中的key獲取title中的值。第五個(gè)參數(shù):表示title中的數(shù)據(jù)顯示所對(duì)應(yīng)的TextView,如圖3-32圖 3-32Activity的界面顯示為圖3-33運(yùn)行: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大

20、話企業(yè)級(jí) Android 開發(fā)本討論群:65882321圖 3-33圖3-33 只是顯示標(biāo)題, 并沒有綁定數(shù)據(jù), 如何顯示內(nèi)容呢? 那就得用到業(yè)務(wù)類Service,調(diào)用它的數(shù)據(jù)分頁getScrollData()方法來得到數(shù)據(jù),然后用迭代將數(shù)據(jù)都加入到data中,代碼如下:Activity.javapublic classActivity extends Activity /* Called when the activity is first created. */private final static String TAG=" private ListView listView;

21、Activity"privateOverrideServiceService;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main);listView = (ListView)findViewById(R.id.List);Service = newService(this);Service.getScrollData(0, 10);/前十條數(shù)據(jù)List<>s=List<HashMap<St

22、ring,String>> data = newArrayList<HashMap<String,String>>();HashMap<String, String>title = new HashMap<String, String>();title.put("id","編號(hào)");title.put("name", "姓名");title.put("age",data.add(title); for("");/標(biāo)題

23、s):HashMap<String, String> map = new HashMap<String, String>();map.put("id",String.valueOf(.getId();: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321map.put("name",.getName();map.put("age", String.valueOf(data.add(map);/顯示各個(gè)數(shù)據(jù).getAge();SimpleAdapter ad

24、apter = new SimpleAdapter(Activity.this,data, R.layout.item, new String"id","name","age",new intR.id.listView.setAdapter(adapter);id,R.,R.id.age);運(yùn)行界面效果如圖3-34圖 3-34通過圖3-34發(fā)現(xiàn),數(shù)據(jù)已經(jīng)列出了,這個(gè)列表的每一行是可以點(diǎn)擊的如圖3-34: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321圖 3-35

25、但是,我們?cè)趺粗傈c(diǎn)擊的是哪行呢?當(dāng)我們點(diǎn)擊ListView每一行的時(shí)候,會(huì)觸發(fā)一個(gè)setOnItemClickListener,代碼如下:listView.setOnItemClickListener(new AdapterView.OnItemClickListener() Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) / TODO Auto-generated method stub);當(dāng)我們點(diǎn)擊ListView某一項(xiàng)之后,系統(tǒng)會(huì)調(diào)用onItem

26、Click()方法,它的parent參數(shù)就 是上面的ListView,View參數(shù)表示每一項(xiàng)最頂級(jí)的那個(gè)元素,如圖3-36所選的內(nèi)容,position參數(shù)表示每一項(xiàng)數(shù)據(jù)在adapter中的位置編號(hào),id參數(shù)表示每一項(xiàng)在ListView中的位置編號(hào)。: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321圖3-36它的文檔說明不是很清楚,我們通過打印和比較,可以測(cè)試一下參數(shù)position和id是否 相等,在onItemClick()方法中加入代碼:Log.i("position and id","result=

27、"+( position=id);加入過濾器“position and id”,單擊列表的一項(xiàng)如圖3-35,運(yùn)行結(jié)果如圖3-37圖3-37Position和id兩個(gè)元素在本次應(yīng)用中是相等的, 如何獲取單擊那項(xiàng)的內(nèi)容呢? 在onItemClick()方法中加入代碼如下:public void onItemClick(AdapterView<?> parent, View view,int position, long id) / TODO Auto-generated method stubListView listView = (ListView)parent;HashM

28、ap<String, String> itemData = (HashMap<String, String>)listView.getItemAtPosition(position);StringStringid = itemData.get("itemData.get("name");id");name =: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321String ageLog.i(TAG,= itemData.get("age");"

29、className="+ view.getClass().getName();/打印 view 的類名Log.i(TAG,Log.i(TAG,"id="+id+ "name="+name+"age"+age);"result="+(position=id););運(yùn)行本應(yīng)用的方法,如圖3-38,圖3-38之后,如圖3-35點(diǎn)擊列表的一項(xiàng),出現(xiàn)的結(jié)果如圖3-39運(yùn)行圖3-39通過運(yùn)行結(jié)果, 我們得到了被單擊元素的值和視圖的布局RelativeLayout, 并且知道position和id相等。上述ListVi

30、ew的使用方法,在實(shí)際應(yīng)用中會(huì)經(jīng)常用到,所以大家一定要: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321掌握。如圖3-40,所選擇的內(nèi)容不屬于數(shù)據(jù)項(xiàng),它只是一個(gè)標(biāo)題,我們可以將它固定放到main.xml文件中,代碼如下;main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android=" android:orientation="vertical" android:la

31、yout_width="fill_parent" android:layout_height="fill_parent"><RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content&qu

32、ot; android:text="string/positionid" android:id="+id/idTitle"></TextView><TextView android:layout_width="200px" android:layout_height="wrap_content"android:layout_toRightOf="id/idTitle" android:layout_alignTop="id/idTitle" andro

33、id:gravity="center_horizontal" android:text="string/name" android:id="+id/nameTitle"></TextView><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="id/nameTitle" android:l

34、ayout_alignTop="id/nameTitle" android:text="string/age" android:id="+id/ageTitle"></TextView></RelativeLayout><ListView": guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321android:id="+id/List"android:layout_width="fill_parent&qu

35、ot; android:layout_height="wrap_content"></ListView></LinearLayout>String.xml<?xml version="1.0" encoding="utf-8"?><resources><string<string<string<string<stringname="hello">Hello World,Activity!</string>name=

36、"app_name">數(shù)據(jù)庫應(yīng)用</string> name="positionid">編號(hào)</string> name="name">姓名</string>name="age"></string></resources>圖3-40Activity中加入標(biāo)題的代碼去掉,就變?yōu)槿缦麓a:然后,把Activity.javapublic classActivity extends Activity /* Called when the a

37、ctivity is first created. */private final static String TAG=" private ListView listView;Activity"privateOverrideServiceService;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);listView = (ListView)findViewById(R.id.List);: guo

38、shiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321Service = newService(this);Service.getScrollData(0, 10); /前十條數(shù)據(jù)List<>s =List<HashMap<String, String>> data = newArrayList<HashMap<String,String>>();for(:s)HashMap<String, String> map = new HashMap<String, String

39、>();map.put("map.put("name",id", String.valueOf(.getName();.getId();map.put("age", String.valueOf(data.add(map);/顯示各個(gè)數(shù)據(jù).getAge();SimpleAdapter adapter = new SimpleAdapter(Activity.this,data, R.layout.item, new String"id", "name","age",ne

40、w intR.id.listView.setAdapter(adapter);id, R., R.id.age);listView.setOnItemClickListener(new AdapterView.OnItemClickListener()Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) / TODO Auto-generated method stubListView listView = (ListView)parent; H

41、ashMap<String, String> itemData = (HashMap<String,String>)listView.getItemAtPosition(position);StringString Stringid = itemData.get("name = itemData.get("name");id");age= itemData.get("age");"className="+ view.getClass().getName();/打印viewLog.i(TAG,

42、的類名Log.i(TAG,Log.i(TAG,"id="+id+ "name="+name + "age"+ age);"result="+(position=id););運(yùn)行本應(yīng)用,結(jié)果如圖3-41: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321圖3-41,標(biāo)題已經(jīng)不能被單擊選中了。數(shù)據(jù)和標(biāo)題已經(jīng)1.3使用 SimpleCursorAdapter 綁定數(shù)據(jù)除了前面使用SimpleAdapter綁定數(shù)據(jù),我們還可以使用SimpleCursorAdapte

43、r綁定,使用SimpleCursorAdapter更適合綁定數(shù)據(jù)庫的集,在業(yè)務(wù)類中只返回Cursor就可以,然后將Cursor賦給SimpleCursorAdapter,下面我們用SimpleCursorAdapter去實(shí)現(xiàn)數(shù)據(jù)的綁定。首先,在業(yè)務(wù)類Service中加入返回游標(biāo)的方法getRawScrollData(),代碼如下:Service.javapublic Cursor getRawScrollData(int startResult, int maxResult)List<>s = new ArrayList<>();Database database =

44、databaseHelper.getWritableDatabase();return database.rawQuery("selectid , name, age fromlimit ?,?",new StringString.valueOf(startResult), String.valueOf(maxResult);然后在Activity類中使用SimpleCursorAdapter綁定數(shù)據(jù),代碼如下:Activity.javapublic classActivity extends Activity /* Called when the activity is

45、first created. */private final static String TAG=" private ListView listView;Activity"privateServiceService;: guoshiandroid所有,請(qǐng)保留國(guó)士博客:大話企業(yè)級(jí) Android 開發(fā)本討論群:65882321Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main);listV

46、iew = (ListView)findViewById(R.id.List);Service = newService(this);/* 使用 SimpleCursorAdapter 綁定數(shù)據(jù)*/Cursor cursor =Service.getRawScrollData(0, 10);/得到游標(biāo)SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,item, cursor, new String"R., R.id.age);R.layout.id,id", "name", "age", new intR.id.listView.setAdapter(adapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() Overridepublic void onItemClick(AdapterView<?> parent, View view,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論