Android中完成“圖書列表與詳情”應(yīng)用的代碼清單_第1頁(yè)
Android中完成“圖書列表與詳情”應(yīng)用的代碼清單_第2頁(yè)
Android中完成“圖書列表與詳情”應(yīng)用的代碼清單_第3頁(yè)
Android中完成“圖書列表與詳情”應(yīng)用的代碼清單_第4頁(yè)
Android中完成“圖書列表與詳情”應(yīng)用的代碼清單_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論