android qq开合表

qq悬浮列表功能暂未实现

main。xml

<RelativeLayout 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"
    tools:context=".Activity.Demo9Activity">
    <ExpandableListView
        android:id="@+id/demo9_expendablelistview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

adapter

public class Demo9Adapter extends BaseExpandableListAdapter {

        private List<String> groupList;//外层的数据源
        private List<List<String>> childList;//里层的数据源
        private Context context;

        public Demo9Adapter(Context context, List<String> groupList,List<List<String>> childList ){
            this.context = context;
            this.groupList = groupList;
            this.childList = childList;
        }

        @Override
        public int getGroupCount() {
            return groupList.size();
        }

        /**
         * 这个返回的一定要是对应外层的item里面的List集合的size
         * @param groupPosition
         * @return
         */
        @Override
        public int getChildrenCount(int groupPosition) {
            return childList.get(groupPosition).size();
        }

        @Override
        public Object getGroup(int groupPosition) {
            return groupPosition;
        }

        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return childList.get(groupPosition).get(childPosition);
        }

        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        @Override
        public boolean hasStableIds() {
            return true;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            convertView = View.inflate(context, R.layout.item_demo9_style1, null);
            //分组名字
            TextView textView = (TextView) convertView.findViewById(R.id.group_name);
            //子元素的个数
            TextView number = (TextView) convertView.findViewById(R.id.count);
            number.setText(childList.get(groupPosition).size()+"个");
            textView.setText(groupList.get(groupPosition));
            return convertView;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup viewGroup) {
            view = View.inflate(context, R.layout.item_demo9_style2, null);
            TextView textView = (TextView) view.findViewById(R.id.child_name);
            //外层的分组名字
            textView.setText(childList.get(groupPosition).get(childPosition));
            return view;
        }

        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }

}

main

 private ExpandableListView expandableListView;
    private Demo9Adapter myAdapter;
    private List<String> groupList;
    private List<List<String>> childList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo9);

        initView();

    }
//    分组悬浮

    private void initView() {
        expandableListView = (ExpandableListView) findViewById(R.id.demo9_expendablelistview);
        groupList = new ArrayList<>();
        childList = new ArrayList<>();
        addData("幼稚园同学",new String[]{"周杰伦","江一燕 ","佟丽娅","高圆圆","刘诗诗","刘亦菲","angleBaby","张静初","张含韵",});
        addData("小学同学",new String[]{"光头强","熊大","熊二","妙蛙种子","比卡丘","双蛋瓦斯","贪吃蛇"});
        addData("初中同学",new String[]{"吉泽明步","波多野结衣","爱川美里菜","小川阿佐美","桃谷绘里香","泷泽萝拉","北原多香子","石川施恩惠","北条麻妃","麻仓优","羽田爱","保坂绘里"});
        addData("高中同学",new String[]{"秦始皇","李世民","武则天","曹操","刘备","孙权"});
        addData("大学同学",new String[]{"周杰伦","江一燕 ","佟丽娅","高圆圆","刘诗诗","刘亦菲","angleBaby","张静初","张含韵",});
        addData("研究生同学",new String[]{"光头强","熊大","熊二","妙蛙种子","比卡丘","双蛋瓦斯","贪吃蛇"});
        addData("博士同学",new String[]{"小川阿佐美","桃谷绘里香","泷泽萝拉","北原多香子","石川施恩惠","北条麻妃","麻仓优","羽田爱","保坂绘里"});
        addData("教授同事",new String[]{"秦始皇","李世民","武则天","曹操","刘备","孙权"});
        addData("众仙家名册",new String[]{"苍井空","小泽玛利亚","吉泽明步","波多野结衣","爱川美里菜","小川阿佐美","桃谷绘里香","泷泽萝拉","北原多香子","石川施恩惠","北条麻妃","麻仓优","羽田爱","保坂绘里","秦始皇","李世民","武则天","曹操","刘备","孙权"});
        myAdapter = new Demo9Adapter(this,groupList,childList);
        expandableListView.setAdapter(myAdapter);

//        首次加载全部展开

        for (int i = 0; i < groupList.size(); i++) {

            if(i==0){
                expandableListView.collapseGroup(i);
            }else {
                expandableListView.expandGroup(i);
            }
        }

//        2、不能点击收缩:

        expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                                        int groupPosition, long id) {
                // TODO Auto-generated method stub
                return false;
            }
        });

        //长按事件
        expandableListView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {

            @Override
            public void onCreateContextMenu(ContextMenu menu, View v,
                                            ContextMenu.ContextMenuInfo menuInfo) {
                // TODO Auto-generated method stub
                menu.setHeaderTitle("选择操作");

//                DOWNLOAD_RETRY  DOWNLOAD_DEL  DOWNLOAD_START
                menu.add(0,0 , 0,   "重试");
                menu.add(0, 1, 0, "删除");
                menu.add(0, 2, 0, "启动");
            }
        });

    }

    /**
     * 用来添加数据的方法
     */
    private void addData(String group, String[] friend) {
        groupList.add(group);
        //每一个item打开又是一个不同的list集合
        List<String> childitem = new ArrayList<>();
        for (int i = 0; i < friend.length; i++) {
            childitem.add(friend[i]);
        }
        childList.add(childitem);
    }
    /**
     * 长按菜单响应函数
     */
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        //关键<span class="wp_keywordlink" style="margin: 0px; padding: 0px; border: 0px; background: transparent;"><a target=_blank href="http://www.xuebuyuan.com/" title="代码" target="_blank" style="text-decoration: none; color: rgb(1, 150, 227);">代码</a></span>
        ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo();
        int type = ExpandableListView.getPackedPositionType(info.packedPosition);
        if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {//上面的type设定这里类型的判定!这里是child判定!
            int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); //在child判定里面,获取该child所属group!
            int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition); //在child判定里面,获取该child所属position!
            switch (item.getItemId()) {
                case 0:
                    Toast.makeText(this,"我是重试",Toast.LENGTH_SHORT).show();
//                    makeTextShort("我是重试");
                    break;
                case 1:
                    Toast.makeText(this,"我是删除",Toast.LENGTH_SHORT).show();
                    break;
                case 2:
                    Toast.makeText(this,"我是启动",Toast.LENGTH_SHORT).show();
                default:
                    break;
            }
            return true;
        }
        return false;
    }

数据参考:http://blog.csdn.net/dl10210950/article/details/52525492

时间: 2024-10-09 06:58:54

android qq开合表的相关文章

最新最全的 Android 开源项目合集

原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 Android 开发的方方面面,基本很全了.对 Android 开发感兴趣的欢迎 Star ,后续也会定期维护更新这个列表.当然,你也可以去 opendigg 上查看. -- 由欧戈分享 awesome-github-android-ui 是由OpenDigg整理并维护的安卓UI相关开源项目库集合.

Android快速开发之appBase——(6).HttpReq和APICloudSDK

Android快速开发之appBase--(6).HttpReq和APICloudSDK HttpReq和APICloudSDK都是网络请求组件,都是基于xUtils的HttpUtils重新封装的.接下来讲一下使用方法. 1.HttpReq 看以看到有这么几个方法 GET:GET方式请求 POST:普通的POST表单提交 POST:将数据以流的形式传递 /** * POST请求,用InputStream的方式传递请求参数 * * @param api * 接口地址 * @param reques

Android安全开发之Provider组件安全

Android安全开发之Provider组件安全 作者:伊樵.呆狐@阿里聚安全 1 Content Provider组件简介 Content Provider组件是Android应用的重要组件之一,管理对数据的访问,主要用于不同的应用程序之间实现数据共享的功能.Content Provider的数据源不止包括SQLite数据库,还可以是文件数据.通过将数据储存层和应用层分离,Content Provider为各种数据源提供了一个通用的接口. 创建一个自己的Content Provider需要继承

Android 安全开发之 ZIP 文件目录遍历

1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在"../"的字符串,攻击者可以利用多个"../"在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件.如果被覆盖掉的文件是动态链接so.dex或者odex文件,轻则产生本地拒绝服务漏洞,影响应用的可用性,重则可能造成任意代码执行漏洞,危害用户的设备安全和信息安全.比如近段时间发现的"寄生兽"漏洞.海豚浏览器远程命令执行漏洞.三星默认输入法远程代码执行漏洞等都与ZIP文件目录遍历有

最新dedecms网页游戏开服表发号网站源码模板

模板介绍 最新dedecms网页游戏开服表发号网站源码模板,让你更精确的把握游戏开服时间和战略技巧. 这套网页游戏模板是织梦二次开发后的一套网页源码,后台也是经过二次开发后,适合游戏网站的一些参数说明及添加信息. 模板文件: 404.htm            大气的404页面 article_fahao.htm  发号模板详细页 article_time.htm   发号时间详细页 footer_time.htm    发号时间底部模板 head_time.htm      发号时间头部模板

Android底层开发之Audio HAL

http://blog.csdn.net/kangear/article/details/44939429 Android底层开发之Audio HAL 在Android音频底层调试-基于tinyalsa中以「抛开Android的天生复杂,回归嵌入式Linux的本质」的方式介绍如何调试Linux内核中的音频驱动. 这里向上再伸展一下进入HAL层,看是如何将tinyalsa封装给Frameworks使用的. 基于4.2.2版本源码进行讨论.Android官方教程是Audio Implementing

最新Android SDK_API_开发包_离线包_下载

[转载][资源]最新Android SDK_API_开发包_离线包_下载 开发Android应用少不了Android SDK,由于谷歌服务器的原因,在国内下载Android SDK速度非常慢,如果要把所有的Android SDK下载回来势必是一件非常痛苦的事情.因此,在这里把本人下载的所有的Android SDK打包分享,希望对广大Android 开发者能有所帮助. 所安装的Android SDK,  包括谷歌到目前为止发布的所有的Android API,和部分工具. SDK_API_开发包_离

Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值

Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值 题外话:一个问题研究到最后,那边记录文档的前半部分基本上都是没用的,甚至是错误的. 重点在最后,前边不过一些假想猜測. http://blog.csdn.net/kangear/article/details/40072707 在调试一下红外遥控器input驱动时,直接採用的是一个半成品的驱动在上边实现的自己的设备的匹配,但同一时候遇到了一些关于input输入子系统的疑惑. 按键一般有「按下和抬起」两个状态一般使用0和1

Android官方开发文档Training系列课程中文版:目录

原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻译成英文,供国内的开发者使用,尤其是入门开发者,虽然现在网络上有很多入门课程,但是还是依靠官方文档学习来的靠谱,安卓官方文档是一系列的课程,使每个人可以系统的掌握安卓的知识,相比其它课程来说,它为开发者提供了查缺补漏的功能. 在这里你可以领略到安卓开发世界的精彩. Tips : 同时,本目录可以作为