运用ListFragment

view:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><fragmentandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"class="com.young.fragmentdemo.listFragment"android:id="@+id/title"></fragment><FrameLayoutandroid:layout_width="0dp"android:layout_height="fill_parent"android:id="@+id/detail"android:layout_weight="2"></FrameLayout></LinearLayout>

新建一个Date类用来保存要显示的数据

public class Data {//标题public  static final String[] TITLE={"线性布局","绝对布局","相对布局","帧布局"};//详细内容public static final String[] DETAIL={"中国空军新闻发言人申进科上校今天上午发布消息:经中央军委批准,空军派出4架伊尔-76飞机,投入尼泊尔抗震救灾。按照空军指示命令,27日8时前,2架伊尔-76飞机调机至成都双流机场,1架伊尔-76飞机调机至昆明长水机场,空运中国军队救灾人员和救援装备。\n" +"  伊尔-76作为军事运输机研制项目于上世纪60年代末提出并开始设计。由于安-12作为苏联军事空运主力已经显得载重小和航程不足,苏联为了提高其军事空运能力,急需一种航程更远、载重更大、速度更快的新式军用运输机,于是决定研制这种在外形和载重能力都类超过美国C-141重型运输机的伊尔-76,以弥补苏联军事空运能力的不足","伊尔-76是世界上最为成功的一款重型运输机,至今以来已有超过38个国家使用过或正在使用伊尔-76,共有超过850余个营运者。苏联(俄罗斯)是最大的军用国,乌克兰和白俄罗斯是最大的民用版使用国。\n" +"  解放军在90年代以前可使用的大中型运输机包括运7、运8和少量的安24等。运7源自安-24,载重约5500千克,运-8源自安-12,载重约20吨。按现在的技术水平来看,这两种机型的载重量、航程都不堪应付快速空投和部队机动的需要。因此90年代起,我国引进了多达数十架的俄罗斯伊尔-76大型喷气运输机。\n" +"  伊尔-76的详细资料请见其具体页面。目前西飞、陕飞等企业正在考虑运-8的后继机型,包括研制全重提高至75吨的运-8改型,或伊尔-76,或伊尔-76的改进型号,为之正向外争取合作伙伴,推进预研工作。同时,伊尔-76已经成为我军空警2000大型预警机的载机平台。","目前,伊尔-76是我军唯一的真正意义上的现役大型运输机。","以上就是在Android中关于InstanceState保存数据和恢复数据的过程,在这里我想再重复一遍:onSaveInstanceState()和onRestoreInstanceState()机制来保存数据时,它仅在非用户显式的指令杀死应用程序时保存和恢复数据。我们可以使用它在我们的程序中来保存数据,可以作为保存数据的一种方式,但在使用过程中需要注意其使用原理和方法。"};
}

创建一个listFrament

public class listFragment extends ListFragment {boolean dualPane; //是否在一屏上同时显示列表和详细内容int curCheckPosition=0;  //当前选择的索引位置@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_checked,Data.TITLE));  //为列表设置适配器//获取布局文件中添加的FrameLayout帧布局管理器View detailFrame=getActivity().findViewById(R.id.detail);dualPane=detailFrame!=null&&detailFrame.getVisibility()==View.VISIBLE; //判断是否在已个屏幕上同时显示列表和详细内容if (dualPane){getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);//设置列表为单选模式showDetails(curCheckPosition);  //显示详细内容}}//重写onSaveInstanceState()方法,保存当前选中的列表项的索引值@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt("curChoice",curCheckPosition);}@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {showDetails(position);}void showDetails(int index){curCheckPosition=index;  //更新保存当前索引位置的变量的值为当前选中值if(dualPane){getListView().setItemChecked(index,true);//设置选中列表项为选中状态DetailFragment details=(DetailFragment)getFragmentManager().findFragmentById(R.id.detail);//设置用于显示详情内容的Fragmentif (details==null||details.getShownIndex()!=index){//创建一个新的DetailFragment实列,用于显示当前选中项对应的详细内容details=DetailFragment.newInstance(index);//要在activity中管理Fragment,需要使用FragmentManagerFragmentTransaction ft=getFragmentManager().beginTransaction();//获得一个FragmentTransaction的实列ft.replace(R.id.detail,details);ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);//设置转换效果ft.commit(); //提交事务}}else{                    //在一个屏幕上值能显示列表或详细内容中的一个内容时//使用一个新的Activity显示详细内容Intent intent=new Intent(getActivity(),MainActivity.DetailActivity.class); //创建一个Intent对象intent.putExtra("index",index);startActivity(intent);}}
}

创建一个DetailFragment用来显示详细内容

public class DetailFragment extends Fragment {//创建一个DetailFragment的新实列,其中包括要传递的数据包public static DetailFragment newInstance(int index){DetailFragment fragment=new DetailFragment();//将index作为一个参数传递Bundle bundle=new Bundle();bundle.putInt("index",index);fragment.setArguments(bundle); //将bundle对象作为Fragment的参数保存return fragment;}public int getShownIndex(){return getArguments().getInt("index",0); //获取要显示的列表项索引,0是默认值}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {if(container==null){return  null;}ScrollView scrollView=new ScrollView(getActivity()); //创建一个滚动的视图TextView textView=new TextView(getActivity());       //创建一个文本框对象textView.setPadding(10,10,10,10);                    //设置内边距scrollView.addView(textView);textView.setText(Data.DETAIL[getShownIndex()]);return scrollView;}
}

在默认创建的MainActivity中创建一个内部类。

//创建一个继承Activivtyd的内部类,用于在手机界面中通过Activity显示详细内容public static class  DetailActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//判断是否为横屏,如果为横屏,则结束当前Activity,准备使用Fragment显示详细内容if(getResources().getConfiguration().orientation== Configuration.ORIENTATION_LANDSCAPE){finish();return;}if(savedInstanceState==null){//在初始化是插入一个显示详细内容的FragmentDetailFragment details=new DetailFragment(); //实列化DetailFragment的对象details.setArguments(getIntent().getExtras()); //设置要传递的参数getFragmentManager().beginTransaction().add(android.R.id.content,details).commit(); //添加一个显示详细内容的Fragment}}}

在AndroidManifest.xml 中为DetailActivity配置。

<activity
            android:name=".MainActivity$DetailActivity"
            android:label="详细内容"></activity>

Fragment的运用实列相关推荐

  1. 输出等边三角形php,php打印三角星星方法实列

    php打印三角星星方法实列 php打印三角形,直角三角形.倒直角三角形.等腰三角形的代码.逻辑都是外层循环控制行数,内层循环控制空格或星号的个数. 一.php输出直角三角形<?php for($ ...

  2. php实现身份证号码获取归属地地址的实列教程,含完整全国地区归属数据!

    本篇文章主要讲解实现,php通过读取身份证地理位置编码进行匹配归属地的功能实例. 日期:2021-7-10 作者:任聪聪 实列文件截图: 说明:我将数据切分成了两种类型,依据自己的习惯进行导入数据库即 ...

  3. BGP——AS—PATH正则表达式(实列讲解+配置)

    目录 一.(表1 )关于AS_PATH访问列表的正则表达式元字符特殊字符 二.字符组合路由含义: 三.实列理解: 四.应用: (1)应用--过滤: (2)应用--选路: 使用 正则表达式目的:匹配BG ...

  4. 旋度的散度为零证明_(大牛分享)实列讲解:Python Sympy计算梯度、散度和旋度...

    今天为大家带来的内容是:(大牛分享)实列讲解:Python Sympy计算梯度.散度和旋度 sympy有个vector 模块,里面提供了求解标量场.向量场的梯度.散度.旋度等计算,官方参考连接: ht ...

  5. 【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列

    [综合评价分析]熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj ...

  6. 【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列

    [综合评价分析]topsis评价 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1.TOPSIS法的原理 2.TOPSIS法案例分析 3.建立模型并求解 3.1数据预处理 3.2代码实现数 ...

  7. TrueNAS SCALE中添加 jellyfin电影服务器容器实列

    TrueNAS SCALE中添加 jellyfin电影服务器容器实列 http://av98.byethost10.com/?thread-1201.htm 解锁TrueNAS SCALE 三方doc ...

  8. python网络爬虫实列——站长之家url解码编码

    爬虫实列--站长之家url解码编码 利用urllib可以做一些网页在线翻译,在线解码之类的实列. 1. 这是网站 2.找到所需要的请求头文件 找到请求网址,明确请求方法(详情请百度get请求与post ...

  9. 查询域内计算机命令,AD域控Dsquery查询命令实列

    注:请以管理员的身份运行cmd程序,要不然某些命令不生效 AD域控Dsquery查询命令实列 查询技术支持二部的所有用户 dsquery user OU=技术支持二部,OU=技术部,OU=ZT-Use ...

最新文章

  1. 滴滴魅族手机人脸识别没有反应_魅族Note9发布,亮点不足,价格却很有诚意
  2. 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...
  3. .NET读写Excel工具Spire.Xls使用(1)入门介绍
  4. 自定义View字段表头
  5. 如何保护企业网络免受DDoS攻击?—Vecloud微云
  6. javascript指南_JavaScript还原方法指南
  7. java微信发文字乱码_获取微信用户信息出现乱码
  8. 异常:java.lang.NoSuchMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext
  9. mysql语言翻译_SQL语句翻译成MYSQL查询
  10. Java校招120道面试题目合集
  11. 根据出生年日计算年龄
  12. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一
  13. redis实战第七篇 使用redis工具(redis-cli)搭建redis cluster
  14. mactxt文件如何转换成html,最佳的用于Mac上的PDF文件转换到HTML文件的转换器
  15. find、文件后缀及linux与Windows互传
  16. 使用TreeMap实现ASCII排序
  17. 时间序列分析——基于R语言案例数据课后数据
  18. 邮储银行您在我行留存的身份信息不准确.. 解决
  19. H5学习之11(html中的浮动布局)
  20. C++ Primer笔记12---chapter12 动态内存

热门文章

  1. 获取pheatmap聚类后和标准化后的结果
  2. oracle自动分区maxvalue,分区表中的maxvalue参数设置-Oracle
  3. pandas使用argmax函数返回给定series对象中最大值(max、maximum)的行索引实战
  4. Python使用datetime中的timedelta模块实现时间增减:python计算100天后是哪年那月那日?
  5. dropout是什么?为什么dropout管用?测试集上是否需要使用dropout?说明为什么神经网络中的dropout可以作为正则化?
  6. NLP命名实体识别NER数据准备及模型训练实例
  7. 林园投资体系+嘴巴经济+病从口入+老龄化
  8. 一个云服务器可以部署多个项目吗,云服务器可以部署多个项目
  9. C语言中within函数,vfprintf() - C语言库函数
  10. hongyi lee 作业1