1、fragment简介

我对fragment的理解是基于activity的,对于大多数的基本开始发时,我们最先遇到的就是用activity来开发。

简单的例子,新建一个最基本的Android空白界面,我们得到的是一个可以显示一个空白界面的app。一个activity对应着一个layout。

但是fragment则是基于activity,突破了已经固定好的layout的限制,在原有的layout中,把布局元素作为容器,动态容纳新的layout。

这样就等于在一个activity中可以拥有多个界面。

2、ListFragment实例讲解

最终效果

最终效果如上图所示

2.1、首先我们先谈一下,准备工作activity_main的布局:activity_main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/fragment_container"

android:layout_width="fill_parent"

android:layout_height="0dip"

android:layout_weight="1" >

这里的线性布局,包含了三个部分(1)layout_title(2)fragment_container(3)layout_bottom

其中(2)fragment_container就是用来动态加载listfragment的地方。

2.2、第二点我们看一下被动态加载到fragment_container中的布局:文件fragment_order.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/android:list"

android:scrollbars="none"

android:dividerHeight="0dp"

android:divider="#00000000"

android:listSelector="#00000000"

android:layout_width="match_parent"

android:layout_height="match_parent" />

分析以上的xml可以看出,为了动态加载一个listfragment,我们为其编写了一个拥有ListView组件的xml,这一点是必须的。

2.3、第三点,我们看一看到底是如何在activity中用什么方式动态的加载listfragment

我们看一下MainActivity.Java的关键部分

private FragmentManager manager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//*********************************************

manager = getFragmentManager();

manager.beginTransaction().add(R.id.fragment_container, homefragment, "article").commit();

//*********************************************

我特殊标记的地方就是用来动态加载的代码。

为了加载fragment,我们要编写一个fragment类,这个类的对象我们可以看到在add函数中被用到,也是在这个地方,将fragmen加载。

使用fragmentManager的add函数来加载,它有三个参数(1)fragment被加载的位置(R.id.fragment_container)(2)一个fragment对象,这个对象的编写也很重要,等会讲到。(3)为动态加载的fragment起一个名字,这一项,随便起。

2.4、第四步,fragment对象的类的编写

上文中第二步的fragment_order.xml就是被这个类来使用,实例化,正是因为有了这个类才能够将fragment实例化,于是才能被动态加载。

public class Fragment_order extends ListFragment

{

private MainActivity parentActivity;

private String[] values = new String[] { "快餐店", "烤食店", "烧鱼店", "甜食店", "蔬菜店",

"融合菜店","面条店" };

private int[] images = new int[] { R.drawable.fastfood,

R.drawable.roastfood, R.drawable.fishfood,

R.drawable.sweetfood, R.drawable.vegetables,

R.drawable.multifood,R.drawable.noodles };

//用来初始化listfragmnet每一条项目的资源

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_order, container, false);

//这里用inflate函数,在初始化创建view时返回fragment_order.xml实例

}

//下面的部分则是用于将每一条项目的资源放入到listview的每一个条目中去

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

List> list = new ArrayList>();

for (int i = 0; i < values.length; i++) {

Map listItem = new HashMap();

listItem.put("values", values[i]);

listItem.put("images", images[i]);

list.add(listItem);

}

SimpleAdapter adapter = new SimpleAdapter(getActivity(),list,

R.layout.list_item, new String[] { "values", "images" },

new int[] { R.id.storeName, R.id.storePic });

setListAdapter(adapter);

}

主要想讲一讲simpleAdapter的用法,因为这很重要,如果数据不能和layout绑定,那么就会不能运行成功。

使用simpleAdapter是很重要的。为什么要使用simpleAdapter的原因很简单,绑定数据和layout的工作不可能完全由程序自动完成,数据和layout的对应关系需要自己来定,adapter就是为了把对应的数据绑到对应的layout上

simpleAdapter算是Adapter中比较简单好用的一个

listitem中用了Map的数据格式,代表了每一行内容其中的数据。

list则是一连串的Map

我们看simpleAdapter的参数,总共5个:(1)得到当前的activity(2)已经将数据存好了的list(3)又是一个xml,这个xml是用来作为listview的一条项目的layout,这样一个项目的外观才会被确定(4)这个数组指明了在Map中,数据的名称代号是什么,这样adapter在取list的每个条目的数据时,才有参照。这个参数同时和下一个参数有很大关系(5)这个参数是layout中的id,和上一个参数对应着。由上一个参数的数据的名称作为指导,将每一行的数据可以对应到相应的ID。

2.5、最后把listview的每一行条目的layout代码写一下:list_item.xml

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

xmlns:app="http://schemas.android.com/apk/res-auto">

android:id="@+id/contactitem_layout"

style="@style/MMListItem"

android:layout_height="65.0dip"

android:paddingLeft="12dip"

android:background="@drawable/border"

android:padding="2dp"

android:weightSum="1">

android:id="@+id/avatar_container"

android:layout_width="match_parent"

android:layout_marginTop="4dp"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

>

android:id="@+id/storePic"

android:layout_width="50.0dip"

android:layout_height="50.0dip"

android:src="@drawable/head" />

android:id="@+id/storeName"

style="@style/MMFontTitleInList"

android:layout_toRightOf="@+id/storePic"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:text="No data" />

最后祝大家新年快乐,鸡年大吉吧!!!

android的fragment添加列表,Android之listfragment的使用例子相关推荐

  1. android studio怎么添加按钮,Android Studio 工具栏添加常用按钮

    本文中 Android Studio 的版本为 android Studio 2.2 ,操作系统为 Windows,如有操作不同,可能是版本差异. 在工具栏中添加一些常用的按钮,如设置.DDMS,有利 ...

  2. android基础-fragment添加使用getSupportFragmentManage

    0.Fragment 包含两类,它们不能混用 a.Android SDK中的Fragment完整类名为android.app.Fragment (API Level 11才开始有) b.v4包中的Fr ...

  3. android编程fragment,详解Android中Fragment的两种创建方式

    onCreate():在创建fragment时系统会调用此方法.在实现代码中,你可以初始化想要在fragment中保持的那些必要组件,当fragment处于暂停或者停止状态之后可重新启用它们. onC ...

  4. Android 11获取应用列表 android.permission.QUERY_ALL_PACKAGES

    有了这条语句的加持,在编译时 app的 targetSdkVersion 30就能像SDK29那样在安装列表中找到对应app.若没有,则不能根据应用包名查找是否安装该应用 <uses-permi ...

  5. android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...

    本文将带你了解Android应用开发之[Android]使用android-gif-drawable包加载GIF动图,希望本文对大家学Android有所帮助. [导包] 首先需要导入android-g ...

  6. android开发实现选择列表,Android使用RecyclerView实现列表数据选择操作

    Android使用RecyclerView实现列表数据选择操作 发布时间:2020-08-31 17:50:13 来源:脚本之家 阅读:76 作者:迟做总比不做强 这些时间做安卓盒子项目,因为安卓电视 ...

  7. android studio gradle 添加jar,android studio学习----通过gradle来导入jar包

    转载地址:http://www.th7.cn/Program/Android/201507/495477.shtml File->Project Structure 可以打开下面的图: 1.通过 ...

  8. android给textview添加边框,Android:在textview周围添加边框

    如何使用xml布局在图片所示的文字周围添加边框 我尝试将边框添加到布局中,但与文本重叠. 您可以使用形状可绘制 将textviews背景设置为白色,然后将其放在框上方 能否请您详细说明一下,我必须在该 ...

  9. android按钮中添加图标,android 控件 带图标的按钮(ImageButton)

    1.继承关系和子类: 2.定义: mageButton就是用一个图标代表了一些文字的Button,它没Android:text属性.它由Android:src指定图标的位置 android:src=& ...

最新文章

  1. jqm跳转js不加载
  2. 007_logback配置
  3. 用localStorage实现登录时记住密码的功能
  4. Java socket调用Http协议Get请求
  5. 【Python3 爬虫】03_urllib.error异常处理
  6. ubutnu16.04下Intel Realsense D435驱动的安装和python环境的配置
  7. oracle11整库迁移,Oracle11.2数据库迁移总结
  8. scrapy 保存html页面,28.用配合scrapy的方式爬取本地保存的html
  9. BK7256,Wi-Fi6音视频soc-combo芯片,上海博通-内置Flash,支持720P
  10. 蚂蚁海图tms切片工具
  11. twitter开源_30位开源社区经理将在Twitter上关注
  12. DolphinScheduler 集群模式部署
  13. TFmini 常见问题与解答
  14. Servlet报错500的问题
  15. ACWing 908.最大不相交区间数量
  16. 计算机专业转生物信息(bioinformatics)方向必看视频
  17. 金融总结十 上交所和深交所申报数量的规定
  18. 将才与帅才的12个差别!你是哪个
  19. FLTK 1.3中使用中文
  20. 英文数据集txt_Delmia机器人仿真编程 点焊仿真 第1节 焊点坐标数据提取

热门文章

  1. 视频画质如何提高?视频画质主要由哪些因素决定?
  2. 游戏建模零基础学习教程
  3. 2022北京冬奥会竞赛日程表以及json数据与python解析
  4. Jquery——removeAttr() (坑)
  5. Photoshop CC2018快捷键大全
  6. HTML DOM 事件 —— 鼠标事件 JS鼠标事件
  7. matlab2015 word,利用MATLAB生成Word文档
  8. php 邮件发送检测,php发邮件测试
  9. mysql自动增长 sql,SQL基础知识V2——自增长列
  10. 即时通讯开发Android端消息推送总结