zoukankan      html  css  js  c++  java
  • 封装好的分组折叠表格

    Android开发:BaseExpandableListAdapter的使用》一文中,虽然我已经把所有的源代码贴到原文里了,但仍然有人找我要源代码 :-(

    我也颇能理解大家的心情,因为有一份可以运行的代码其学习效果显然是不一样的,而且连Ctrl+c和Ctrl+v都省掉了。

    只是博主也是个很懒的人,做完的例子随手就删除了,没有现成的工程给大家。与其再重新做一个,不如再封装一下,给现成的类给大家调用算了。我把它打包到资源里:http://download.csdn.net/source/3383332

    下载后解开压缩包,得到下列文件:

    FieldGroup.java

    GroupedFieldAdapter.java

    simplefield.xml

    现在我来解释怎么用这3个文件。

    打开Eclipse,新建Android Application, 在src目录下新建package,名为ydtf,然后将两个java文件放到ydtf包下面。

    xml文件放到res/layout目录下面。

    新建Activity,双击打开Activity的xml布局文件。在其中加入一个ExpandabledListView的Widget:

    <!-- 分组列表 -->

        < ExpandableListView android:id = "@+layout/gddetail"  

            android:layout_width = "fill_parent" android:layout_height = "0dip"  

            android:layout_weight = "1" />

    打开Activity的java文件,在import部分导入两个类:

    import ydtf.FieldGroup;

    import ydtf.GroupedFieldAdapter;

    然后声明几个实例变量:

    // 声明折叠分组表格需要的 3 个对象

    private GroupedFieldAdapter exlist_adapter = null ; // 适配器

    private ExpandableListView exlist ; // 视图

    private List<FieldGroup> groups ; // 模型

     

    onCreate方法中,加入代码:

    public void onCreate(Bundle savedInstanceState) {

    super .onCreate(savedInstanceState);

    setContentView(R.layout. dxdz_main );

    // 取得 listview

    exlist = (ExpandableListView) findViewById(R.layout. gddetail );

    // 初始化 groups

    groups = new ArrayList<FieldGroup>();

    // groups 中放入 3 FieldGroup 对象,在每个 FieldGroup 对象中放入 2 行数据

    for ( int i=0;i<3;){

    i++;

    FieldGroup fg= new FieldGroup( " " +i+ " " );

    fg.addChild( " 1 " , i+ "1" );

    fg.addChild( " 2 " , i+ "2" );

    groups .add(fg);

    }

    // 构建 expandablelistview 的适配器

    exlist_adapter = new GroupedFieldAdapter( this , groups );

    exlist .setAdapter( exlist_adapter ); // 绑定视图-适配器

    }

    运行程序,可得到以下效果:

     

    如果要响应行点击事件, 需要 Activity 实现 ExpandableListView d OnChildClickListener 接口方法onChildClick:

    // 响应行被点击事件

    @Override

    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {

    Object value= exlist_adapter .getChild(groupPosition, childPosition);

    Log.i ( "click row :" , (String)value);

    return false ;

    }

    然后在onCreate方法中加上此句:

    // 响应行被点击事件

    exlist .setOnChildClickListener( this );

    这样,当点击某行时,会调用onChildClick中的代码(在控制台输出一些字符串)。

  • 相关阅读:
    前台传入的application/json;charset=UTF-8格式的数据,java后端从request中获取json数据
    vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单
    vue-element-admin
    进程间通信的几种方式以及线程间通信的几种方式
    vue调用api接口解决跨域问题
    C#多态性(函数重载)
    VirtualBox中安装CentOS7后无法上网的解决方案
    C#继承
    android通过url下载文件
    python的数据爬取
  • 原文地址:https://www.cnblogs.com/encounter/p/2188477.html
Copyright © 2011-2022 走看看