Android FragmentPagerAdapter翻译
public abstract class
FragmentPagerAdapter
extends PagerAdapter
| java.lang.Object | ||
| ↳ | android.support.v4.view.PagerAdapter | |
| ↳ | android.support.v4.app.FragmentPagerAdapter | |
Class Overview
它是PagerAdapter的一种实现,每一个页面都是一个Fragment,并且每一个页面都会保存到fragment manager中,当用户没有可能回到该页面时fragment manager才会将这个fragment销毁。
这种页面十分适用于有一些静态的fragment,例如一组tabs,用户访问的每一个页面都会保存在内存中,尽管当view不可见时可能会被销毁。这就会导致应用程序会占用太多的资源,所以,通常当页面数据量过大时使用FragmentStatePagerAdapter来代替FragmentPagerAdapter
当使用FragmentPageAdapter时ViewPager必须有一个ID。
子类只需要实现适配器的getItem(int)和getCount()方法
下面是官方给出的一个例子:
publicclassFragmentPagerSupportextendsFragmentActivity{
staticfinalint NUM_ITEMS =10;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protectedvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter =newMyAdapter(getSupportFragmentManager());
mPager =(ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
// Watch for button clicks.
Button button =(Button)findViewById(R.id.goto_first);
button.setOnClickListener(newOnClickListener(){
publicvoid onClick(View v){
mPager.setCurrentItem(0);
}
});
button =(Button)findViewById(R.id.goto_last);
button.setOnClickListener(newOnClickListener(){
publicvoid onClick(View v){
mPager.setCurrentItem(NUM_ITEMS-1);
}
});
}
publicstaticclassMyAdapterextendsFragmentPagerAdapter{
publicMyAdapter(FragmentManager fm){
super(fm);
}
@Override
publicint getCount(){
return NUM_ITEMS;
}
@Override
publicFragment getItem(int position){
returnArrayListFragment.newInstance(position);
}
}
publicstaticclassArrayListFragmentextendsListFragment{
int mNum;
/**
* Create a new instance of CountingFragment, providing "num"
* as an argument.
*/
staticArrayListFragment newInstance(int num){
ArrayListFragment f =newArrayListFragment();
// Supply num input as an argument.
Bundle args =newBundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
/**
* When creating, retrieve this instance's number from its arguments.
*/
@Override
publicvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mNum = getArguments()!=null? getArguments().getInt("num"):1;
}
/**
* The Fragment's UI is just a simple text view showing its
* instance number.
*/
@Override
publicView onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_pager_list, container,false);
View tv = v.findViewById(R.id.text);
((TextView)tv).setText("Fragment #"+ mNum);
return v;
}
@Override
publicvoid onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setListAdapter(newArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,Cheeses.sCheeseStrings));
}
@Override
publicvoid onListItemClick(ListView l,View v,int position,long id){
Log.i("FragmentList","Item clicked: "+ id);
}
}
}
The R.layout.fragment_pager resource of the top-level fragment is:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent"android:layout_height="match_parent"> <android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1">
</android.support.v4.view.ViewPager> <LinearLayoutandroid:orientation="horizontal"
android:gravity="center"android:measureWithLargestChild="true"
android:layout_width="match_parent"android:layout_height="wrap_content"
android:layout_weight="0">
<Buttonandroid:id="@+id/goto_first"
android:layout_width="wrap_content"android:layout_height="wrap_content"
android:text="@string/first">
</Button>
<Buttonandroid:id="@+id/goto_last"
android:layout_width="wrap_content"android:layout_height="wrap_content"
android:text="@string/last">
</Button>
</LinearLayout>
</LinearLayout>
The R.layout.fragment_pager_list resource containing each individual fragment's layout is:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:drawable/gallery_thumb"> <TextViewandroid:id="@+id/text"
android:layout_width="match_parent"android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/hello_world"/> <!-- The frame layout is here since we will be showing either
the empty view or the list view. -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1">
<!-- Here is the list. Since we are using a ListActivity, we
have to call it "@android:id/list" so ListActivity will
find it -->
<ListViewandroid:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false"/> <!-- Here is the view to show if the list is emtpy -->
<TextViewandroid:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="No items."/> </FrameLayout> </LinearLayout>
Summary
| [Expand]
Inherited Constants
|
|||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class android.support.v4.view.PagerAdapter
|
|||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| FragmentPagerAdapter(FragmentManager fm) 构造方法,需要传入一个FragmentManager | |||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| void | destroyItem(ViewGroup container, int position, Object object)
根据给定的position移除一个page页
|
||||||||||
| void | finishUpdate(ViewGroup container)
当页面数据加载完成时调用该方法
|
||||||||||
| abstract Fragment | getItem(int position)
返回指定位置的相关fragment
|
||||||||||
| long | getItemId(int position)
返回给定位置的item的标示符
|
||||||||||
| Object | instantiateItem(ViewGroup container, int position)
在给定的位置处创建一个page
|
||||||||||
| boolean | isViewFromObject(View view, Object object)
Determines whether a page View is associated with a specific key object as returned by
instantiateItem(ViewGroup, int). |
||||||||||
| void | restoreState(Parcelable state, ClassLoader loader)
恢复所有的通过saveState()方法保存的与adapter关联的页面实例状态
|
||||||||||
| Parcelable | saveState()
保存所有与adapter相关的页面实例。直到调用restoreState方法是恢复
|
||||||||||
| void | setPrimaryItem(ViewGroup container, int position, Object object)
Called to inform the adapter of which item is currently considered to be the "primary", that is the one show to the user as the current page.
|
||||||||||
| void | startUpdate(ViewGroup container)
当页面将要被显示时调用
|
||||||||||
Android FragmentPagerAdapter翻译的更多相关文章
- Monkey Android API 翻译
此篇笔记,记录了API中,对monkey用法的说明,基于Android Studio 2.2.3. Monkey是一个运行在Android模拟器或者Android设备上的程序,通过使用monkey ...
- android FragmentPagerAdapter getItem方法没有执行
转自 http://blog.csdn.net/getchance/article/details/40263505 在一个 Android 应用中,我使用 FragmentPagerAdapter ...
- 【Android Api 翻译3】android api 完整翻译之Application Fundamentals (学习android必须知道的)
Android应用程序是用Java编程语言编写的.Android SDK工具把应用程序的代码.数据和资源文件一起编译到一个Android程序包中(这个程序包是以.apk为后缀的归档文件),一个Andr ...
- 【Android Api 翻译2】Android Testing(1) 浅尝Android测试的奥秘
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 仅供学习和交流使用,翻译不好勿喷,请只摘除不合适的地方 Testing The Android fram ...
- Android PageAdapter翻译
介绍:ViewPager和PagerAdapter结合使用 public abstract class PagerAdapter extends Object java.lang.Object ...
- Embedded Android 协同翻译
假设你有一定的Android的基础和英语基础. 有愿意贡献开源社区的心. 假设你对下面文件夹感兴趣, 欢迎增加我们协同翻译<Embedded Android> 此次协同翻译.将使用gith ...
- [转][Android]FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
原文链接:http://blog.csdn.net/zhaokaiqiang1992 FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承 ...
- 【Android Api 翻译4】android api 完整翻译之Contacts Provider (学习安卓必知的api,中英文对照)
Contacts Provider 电话簿(注:联系人,联络人.通信录)提供者 ------------------------------- QUICKVIEW 快速概览 * Android's r ...
- 【Android Api 翻译1】Android Texting(2)Testing Fundamentals 测试基础篇
Testing Fundamentals The Android testing framework, an integral part of the development environment, ...
随机推荐
- vue项目未加载完成前显示loading...
1.在Index.html里面加入loading的元素,让loading元素显示,让app元素隐藏 <!DOCTYPE html> <html> <head> &l ...
- 【代码笔记】Web-ionic 网格(Grid)
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Chrome浏览器跨域
配置新版Chrome浏览器跨域,需要创建用户数据文件夹,在其中保存浏览器的缓存.历史记录.收藏夹等数据. Windows系统Chrome跨域 1 下载Chrome 64位绿色版,解压缩,并在桌面创建快 ...
- python自动化开发-6-面向对象编程
面向对象编程 面向对象的特性 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承:面向对象编程 (OOP) 语言的一个主要功能就是“ ...
- android recovery升级过程中掉电处理
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度. 但是 ...
- Openjdk 安装 on centos7
本文演示如何在CentOS7上安装openjdk. 1 准备工作 1.1 查看可安装的版本 $ yum -y list java-1.8* # 列出当前可用的安装版本 Available Packag ...
- 【JS单元测试】Qunit 和 jsCoverage使用方法
近日在网上浏览过很多有关js单元测试相关的文档,工具,但是,针对Qunit 和 jsCoverage使用方法,缺少详细说明,对于初入前端的人来说,很难明白其中的意思,特此整理这篇文章,希望 ...
- 适用于 Azure 虚拟网络的常见 PowerShell 命令
如果想要创建虚拟机,需要创建虚拟网络或了解可在其中添加 VM 的现有虚拟网络. 通常情况下,创建 VM 时,还需考虑创建本文所述资源. 有关安装最新版 Azure PowerShell.选择订阅和登录 ...
- SMP多核启动
在 Linux系统中,对于多核的ARM芯片而言,在Biotron代码中,每个CPU都会识别自身ID,如果ID是0,则引导Bootloader和 Linux内核执行,如果ID不是0,则Biotron一般 ...
- Sender IP字段为"0.0.0.0"的ARP请求报文
今天在研究免费ARP的过程中,抓到了一种Sender IP字段为“0.0.0.0”的ARP请求报文(广播),抓包截图如下: 这让我很疑惑.一个正常的ARP请求不应该只是Target MAC字段为全0吗 ...
From class