版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Android中完成“圖書列表與詳情”的代碼清單范美英(北京信息職業(yè)技術(shù)學(xué)院)摘 要:Android3.0以后為了自動(dòng)適應(yīng)不同設(shè)備的屏幕大小,增加了Fragment類,本文詳細(xì)羅列了使用Fragment等組件完成“圖書列表與詳情”應(yīng)用的代碼清單。關(guān)鍵詞: Android;Fragment;代碼清單;圖書列表;圖書詳情1 src/ SelectBookActivity.java類的代碼package com.zyk.app;import android.app.Activity;import android.content.Intent;import android.os.Bundle;impo
2、rt android.view.Display;import android.widget.TextView;public class SelectBookActivity extends Activity implements BookListFragment.CallbacksTextView tv;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 加載/res/layout目錄下的activity_book_twopane.xml布局文件setConten
3、tView(R.layout.activity_book_twopane);/ 實(shí)現(xiàn)Callbacks接口必須實(shí)現(xiàn)的方法Overridepublic void onItemSelected(Integer id)Display d=getWindowManager().getDefaultDisplay();if(d.getWidth()>d.getHeight()/ 創(chuàng)建Bundle,準(zhǔn)備向Fragment傳入?yún)?shù)Bundle arguments = new Bundle();arguments.putInt(BookDetailFragment.ITEM_ID, id);/ 創(chuàng)建Bo
4、okDetailFragment對(duì)象BookDetailFragment fragment = new BookDetailFragment();/ 向Fragment傳入?yún)?shù)fragment.setArguments(arguments);/ 使用fragment替換book_detail_container容器當(dāng)前顯示的Fragment ;Transaction交易getFragmentManager().beginTransaction().replace(R.id.book_detail_container, fragment).commit(); /elseIntent i=new
5、Intent();i.setClass(SelectBookActivity.this, BookDetailActivity.class);Bundle extras=new Bundle();extras.putInt("id", id);i.putExtras(extras);startActivity(i);2 src/ BookListFragment.java類的代碼package com.zyk.app;import com.zyk.app.model.BookContent;import android.app.Activity;import android
6、.app.ListFragment;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;public class BookListFragment extends ListFragmentprivate Callbacks mCallbacks;/ 定義一個(gè)回調(diào)接口,該Fragment所在Activity需要實(shí)現(xiàn)該接口/ 該Fragment將通過(guò)該接口與它所在的Activity交互public interface C
7、allbackspublic void onItemSelected(Integer id);Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 為該ListFragment設(shè)置AdaptersetListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),android.R.layout.simple_list_item_activated_1,android.R.id.text1, Bo
8、okContent.ITEMS);/ 當(dāng)該Fragment被添加、顯示到Activity時(shí),回調(diào)該方法Overridepublic void onAttach(Activity activity)super.onAttach(activity);/ 如果Activity沒(méi)有實(shí)現(xiàn)Callbacks接口,拋出異常if (!(activity instanceof Callbacks)throw new IllegalStateException("BookListFragment所在的Activity必須實(shí)現(xiàn)Callbacks接口!");/ 把該Activity當(dāng)成Callba
9、cks對(duì)象mCallbacks = (Callbacks)activity;/ 當(dāng)該Fragment從它所屬的Activity中被刪除時(shí)回調(diào)該方法Overridepublic void onDetach()super.onDetach();/ 將mCallbacks賦為null。mCallbacks = null;/ 當(dāng)用戶點(diǎn)擊某列表項(xiàng)時(shí)激發(fā)該回調(diào)方法Overridepublic void onListItemClick(ListView listView, View view, int position, long id)super.onListItemClick(listView, vie
10、w, position, id);/ 激發(fā)mCallbacks的onItemSelected方法mCallbacks.onItemSelected(BookContent.ITEMS.get(position).id);public void setActivateOnItemClick(boolean activateOnItemClick)getListView().setChoiceMode(activateOnItemClick ? ListView.CHOICE_MODE_SINGLE: ListView.CHOICE_MODE_NONE);3 src/ BookDetailFrag
11、ment.java類的代碼package com.zyk.app;import android.app.Fragment;import android.os.Bundle;import android.text.method.ScrollingMovementMethod;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.zyk.app.model.BookContent;publi
12、c class BookDetailFragment extends Fragmentpublic static final String ITEM_ID = "item_id"/ 保存該Fragment顯示的Book對(duì)象BookContent.Book book;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 如果啟動(dòng)該Fragment時(shí)包含了ITEM_ID參數(shù)if (getArguments().containsKey(ITEM_ID)
13、book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID); / 重寫該方法,該方法返回的View將作為Fragment顯示的組件Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)/ 加載/res/layout/目錄下的fragment_book_detail.xml布局文件View rootView = inflater.inflate(R.layout.fragmen
14、t_book_detail, container, false);if (book != null)/ 讓book_title文本框顯示book對(duì)象的title屬性(TextView) rootView.findViewById(R.id.book_title).setText(book.title);/ 讓book_desc文本框顯示book對(duì)象的desc屬性(TextView) rootView.findViewById(R.id.book_desc).setText(book.desc);(TextView) rootView.findViewById(R.id.book_desc).s
15、etMovementMethod(new ScrollingMovementMethod();return rootView;4 src/ BookDetailActivity.java類的代碼package com.zyk.app;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;import com.zyk.app.model.BookContent;public class BookDetailActivity
16、extends ActivityBookContent.Book book;Overrideprotected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);this.setContentView(R.layout.fragment_book_detail);TextView tvt=(TextView) findViewById(R.id.book_title);TextView tvd=(TextView) findViewById(R.id.book_desc);Intent i=th
17、is.getIntent();int id=i.getExtras().getInt("id");book=BookContent.ITEM_MAP.get(id);tvt.setText(book.title);tvd.setText(book.desc);5 src/ BookContent.java類的代碼package com.zyk.app.model;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class
18、 BookContent/ 定義一個(gè)內(nèi)部類,作為系統(tǒng)的業(yè)務(wù)對(duì)象public static class Bookpublic Integer id;public String title;public String desc;public Book(Integer id, String title, String desc)this.id = id;this.title = title;this.desc = desc;Overridepublic String toString()return title;/ 使用List集合記錄系統(tǒng)所包含的Book對(duì)象public static List&l
19、t;Book> ITEMS = new ArrayList<Book>();/ 使用Map集合記錄系統(tǒng)所包含的Book對(duì)象public static Map<Integer, Book> ITEM_MAP = new HashMap<Integer, Book>();static/ 使用靜態(tài)初始化代碼,將Book對(duì)象添加到List集合、Map集合中addItem(new Book(1, "寶葫蘆的秘密", "本書收入現(xiàn)代著名作家張?zhí)煲硐壬钪耐挻碜鲗毢J的秘密"+ "與大林和小林。這兩部作品想象
20、大膽,構(gòu)思奇特,用夸張的手法和幽默" + "的語(yǔ)言完成了對(duì)王葆、大林、小林等著名兒童文學(xué)形象的塑,并在充滿童真" + "童趣的故事中包含深遠(yuǎn)寓意,影響了一代又一代小讀者。");addItem(new Book(2, "中國(guó)經(jīng)典科學(xué)童話", "中國(guó)經(jīng)典科學(xué)童話叢書選取了中國(guó)現(xiàn)當(dāng)代一批有代表性的優(yōu)秀科學(xué)童話 。" + "這些作品在剛發(fā)表時(shí)都受到讀者的歡迎,獲得各方面的好評(píng),以后又經(jīng)受了" + "長(zhǎng)時(shí)間的歷史考驗(yàn),一直在讀者中享有盛譽(yù),堪稱是“陳年佳釀”。");addIt
21、em(new Book(3, "飛彈男孩", "這本書故事性強(qiáng),文風(fēng)獨(dú)特,深受好評(píng)。洛克王國(guó)探險(xiǎn)筆記系列圖書" + "為其代表作品,飛彈男孩系列圖書為其最新力作,講述熱血少年的孤" + "野求生歷險(xiǎn)經(jīng)歷,為國(guó)內(nèi)首部自然探險(xiǎn)小說(shuō)。");private static void addItem(Book book)ITEMS.add(book);ITEM_MAP.put(book.id, book);6 res/layout/activity_book_twopane.xml的代碼清單<?xml version=&
22、quot;1.0" encoding="utf-8"?><!- 定義一個(gè)水平排列的LinearLayout,并指定使用中等分隔條 -><LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16
23、dp" android:divider="?android:attr/dividerHorizontal" android:orientation="horizontal" android:showDividers="middle" > <!- 添加一個(gè)Fragment -> <fragment android:id="+id/book_list" android:name="com.zyk.app.BookListFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /></LinearLayout> 7 res/layout/fragment_book_detail.xml的代碼清單<?xml version="1.0" encoding="utf
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 補(bǔ)腦產(chǎn)品宣傳課程設(shè)計(jì)
- 2025年服裝銷售工作計(jì)劃范文(2篇)
- 軟件課程設(shè)計(jì)日志
- 課程設(shè)計(jì)水果攪拌機(jī)
- 二零二五年度建筑廢棄物資源化利用施工總承包管理服務(wù)合同范本3篇
- 公司執(zhí)業(yè)質(zhì)量管理制度范文(2篇)
- 2025年播音部工作計(jì)劃范例(2篇)
- 2025年度汽車修理廠與汽車后市場(chǎng)平臺(tái)合作服務(wù)合同3篇
- 機(jī)械設(shè)備安全裝置檢查維修保養(yǎng)制度模版(3篇)
- 中小學(xué)績(jī)效工資制度范文(2篇)
- DB4511T 0002-2023 瓶裝液化石油氣充裝、配送安全管理規(guī)范
- 《肝衰竭診治指南(2024版)》解讀
- 2025年集體經(jīng)濟(jì)發(fā)展計(jì)劃
- 房地產(chǎn)銷售主管崗位招聘筆試題及解答(某大型央企)2024年
- 足球D級(jí)教練員培訓(xùn)匯報(bào)
- 巖溶區(qū)水文地質(zhì)參數(shù)研究-洞察分析
- 大學(xué)體育與健康 教案全套 體育舞蹈 第1-16周
- 一年級(jí)數(shù)學(xué)練習(xí)題-20以內(nèi)加減法口算題(4000道)直接打印版
- 施工作業(yè)安全管理規(guī)定(4篇)
- 浙江省金華市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版質(zhì)量測(cè)試((上下)學(xué)期)試卷及答案
- 傳媒行業(yè)突發(fā)事件應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論