android fragmnet

来源:互联网 发布:sql server数据库知识 编辑:程序博客网 时间:2024/06/07 01:13
package org.crazyit.app.model;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Description: * <br/>website: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class BookContent{// 定义一个内部类,作为系统的业务对象public static class Book{public 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<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, "疯狂Java讲义", "一本全面、深入的Java学习图书,已被多家高校选做教材。"));addItem(new Book(2, "疯狂Android讲义", "Android学习者的首选图书,常年占据京东、当当、 "+ "亚马逊3大网站Android销量排行榜的榜首"));addItem(new Book(3, "轻量级Java EE企业应用实战", "全面介绍Java EE开发的Struts 2、Spring 3、Hibernate 4框架"));}private static void addItem(Book book){ITEMS.add(book);ITEM_MAP.put(book.id, book);}}
package org.crazyit.app;import org.crazyit.app.model.BookContent;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * Description: * <br/>website: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class BookDetailFragment extends Fragment{public 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)){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.fragment_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);}return rootView;}}


package org.crazyit.app;import org.crazyit.app.model.BookContent;import android.app.Activity;import android.app.ListFragment;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;/** * Description: * <br/>website: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class BookListFragment extends ListFragment{private Callbacks mCallbacks;// 定义一个回调接口,该Fragment所在Activity需要实现该接口// 该Fragment将通过该接口与它所在的Activity交互public interface Callbacks{public 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, BookContent.ITEMS));}// 当该Fragment被添加、显示到Activity时,回调该方法@Overridepublic void onAttach(Activity activity){super.onAttach(activity);// 如果Activity没有实现Callbacks接口,抛出异常if (!(activity instanceof Callbacks)){throw new IllegalStateException("BookListFragment所在的Activity必须实现Callbacks接口!");}// 把该Activity当成Callbacks对象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, view, 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);}}


package org.crazyit.app;import android.app.Activity;import android.os.Bundle;/** * Description: * <br/>website: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class SelectBookActivity extends Activity implementsBookListFragment.Callbacks{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// 加载/res/layout目录下的activity_book_twopane.xml布局文件setContentView(R.layout.activity_book_twopane);}// 实现Callbacks接口必须实现的方法@Overridepublic void onItemSelected(Integer id){// 创建Bundle,准备向Fragment传入参数Bundle arguments = new Bundle();arguments.putInt(BookDetailFragment.ITEM_ID, id);// 创建BookDetailFragment对象BookDetailFragment fragment = new BookDetailFragment();// 向Fragment传入参数fragment.setArguments(arguments);// 使用fragment替换book_detail_container容器当前显示的FragmentgetFragmentManager().beginTransaction().replace(R.id.book_detail_container, fragment).commit();  //①}}



0 0
原创粉丝点击