Android中完成“图书列表与详情”应用的代码清单_第1页
Android中完成“图书列表与详情”应用的代码清单_第2页
Android中完成“图书列表与详情”应用的代码清单_第3页
Android中完成“图书列表与详情”应用的代码清单_第4页
Android中完成“图书列表与详情”应用的代码清单_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android中完成“图书列表与详情”的代码清单范美英(北京信息职业技术学院)摘 要:Android3.0以后为了自动适应不同设备的屏幕大小,增加了Fragment类,本文详细罗列了使用Fragment等组件完成“图书列表与详情”应用的代码清单。关键词: 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);/ 实现Callbacks接口必须实现的方法Overridepublic void onItemSelected(Integer id)Display d=getWindowManager().getDefaultDisplay();if(d.getWidth()>d.getHeight()/ 创建Bundle,准备向Fragment传入参数Bundle arguments = new Bundle();arguments.putInt(BookDetailFragment.ITEM_ID, id);/ 创建Bo

4、okDetailFragment对象BookDetailFragment fragment = new BookDetailFragment();/ 向Fragment传入参数fragment.setArguments(arguments);/ 使用fragment替换book_detail_container容器当前显示的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;/ 定义一个回调接口,该Fragment所在Activity需要实现该接口/ 该Fragment将通过该接口与它所在的Activity交互public interface C

7、allbackspublic void onItemSelected(Integer id);Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 为该ListFragment设置AdaptersetListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),android.R.layout.simple_list_item_activated_1,android.R.id.text1, Bo

8、okContent.ITEMS);/ 当该Fragment被添加、显示到Activity时,回调该方法Overridepublic void onAttach(Activity activity)super.onAttach(activity);/ 如果Activity没有实现Callbacks接口,抛出异常if (!(activity instanceof Callbacks)throw new IllegalStateException("BookListFragment所在的Activity必须实现Callbacks接口!");/ 把该Activity当成Callba

9、cks对象mCallbacks = (Callbacks)activity;/ 当该Fragment从它所属的Activity中被删除时回调该方法Overridepublic void onDetach()super.onDetach();/ 将mCallbacks赋为null。mCallbacks = null;/ 当用户点击某列表项时激发该回调方法Overridepublic void onListItemClick(ListView listView, View view, int position, long id)super.onListItemClick(listView, vie

10、w, position, id);/ 激发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对象BookContent.Book book;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 如果启动该Fragment时包含了ITEM_ID参数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对象的title属性(TextView) rootView.findViewById(R.id.book_title).setText(book.title);/ 让book_desc文本框显示book对象的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/ 定义一个内部类,作为系统的业务对象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集合记录系统所包含的Book对象public static List&l

19、t;Book> ITEMS = new ArrayList<Book>();/ 使用Map集合记录系统所包含的Book对象public static Map<Integer, Book> ITEM_MAP = new HashMap<Integer, Book>();static/ 使用静态初始化代码,将Book对象添加到List集合、Map集合中addItem(new Book(1, "宝葫芦的秘密", "本书收入现代著名作家张天翼先生最著名的童话代表作宝葫芦的秘密"+ "与大林和小林。这两部作品想象

20、大胆,构思奇特,用夸张的手法和幽默" + "的语言完成了对王葆、大林、小林等著名儿童文学形象的塑,并在充满童真" + "童趣的故事中包含深远寓意,影响了一代又一代小读者。");addItem(new Book(2, "中国经典科学童话", "中国经典科学童话丛书选取了中国现当代一批有代表性的优秀科学童话 。" + "这些作品在刚发表时都受到读者的欢迎,获得各方面的好评,以后又经受了" + "长时间的历史考验,一直在读者中享有盛誉,堪称是“陈年佳酿”。");addIt

21、em(new Book(3, "飞弹男孩", "这本书故事性强,文风独特,深受好评。洛克王国探险笔记系列图书" + "为其代表作品,飞弹男孩系列图书为其最新力作,讲述热血少年的孤" + "野求生历险经历,为国内首部自然探险小说。");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"?><!- 定义一个水平排列的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" > <!- 添加一个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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论