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

 

posted @ 2017-06-26 10:56  新年新气象  阅读(217)  评论(0编辑  收藏  举报