android 学习之ExpandableListView

ExpandableListView是ListView的子类,他在ListView的基础上进行了扩展,它可以将列表项分为几组....以下就是我的一些代码

package com.hurui.myexpandablelistview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private ExpandableListView my_expand;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        my_expand=(ExpandableListView)findViewById(R.id.my_expanview);
        final String[] armtype={"我的好友","我的兄弟","我的寝室"};
        final String[][] arms={{"李文涛","李建宝","刘巍","郑淼","赵超"},
                {"王弄潇","高敏","陈浩","冯辉"},
                {"胡锐","付必胜","徐浩浩","陈磊"}};
        ExpandableListAdapter adapter=new BaseExpandableListAdapter() {
            @Override
            //返回共有多少个父选项
            public int getGroupCount() {
                return armtype.length;
            }
            //返回子菜单的长度....
            @Override
            public int getChildrenCount(int groupPosition) {
                return arms[groupPosition].length;
            }

            //返回父选项下的数组
            @Override
            public Object getGroup(int groupPosition) {
                return armtype[groupPosition];
            }

            //返回子选项的第几个...
            @Override
            public Object getChild(int groupPosition, int childPosition) {
                return arms[groupPosition][childPosition];
            }

            //返回父选项的ID
            @Override
            public long getGroupId(int groupPosition) {
                return groupPosition;
            }
            //返回子选项的ID...
            @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) {
                LinearLayout ll=new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                ImageView logo=new ImageView(MainActivity.this);
                logo.setImageResource(R.mipmap.img08);
                ll.addView(logo);
                TextView textView=getTextView();
                textView.setText(getGroup(groupPosition).toString());
                ll.addView(textView);
                return ll;
            }
            //得到子选项的view
            @Override
            public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
                TextView tv=getTextView();
                tv.setText(getChild(groupPosition,childPosition).toString());
                return tv;
            }

            @Override
            public boolean isChildSelectable(int groupPosition, int childPosition) {
                return true;
            }
            //自定义的TextView控件
            public TextView getTextView(){
               TextView tv=new TextView(MainActivity.this);
                AbsListView.LayoutParams ap=new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64);
                tv.setLayoutParams(ap);
                tv.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
                tv.setPadding(16,0,0,0);
                tv.setTextSize(20);
               return tv;
            }
        };
        my_expand.setAdapter(adapter);
    }
}
 
 
以下是这段代码产生的效果图...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值