关于ExpandableListAdapter

本文详细介绍了如何在Android应用中实现ExpandableListView组件的功能。包括如何自定义适配器来展示分组和子项数据,以及如何设置监听器以响应用户的点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package jannonx.com.myapplication;

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

public class MainActivity extends AppCompatActivity {
    ExpandableListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ExpandableListView) findViewById(R.id.list);

        final MyExpandableListAdapter adapter = new MyExpandableListAdapter();
        listView.setAdapter(adapter);
        //为ExpandableListView的子列表单击事件设置监听器
        listView.setOnChildClickListener(new OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                                        int groupPosition, int childPosition, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "你单击了:"
                        + adapter.getChild(groupPosition, childPosition), Toast.LENGTH_LONG).show();
                return true;
            }
        });

        //创建ExpandableListAdapter方式二
//        ExpandableListAdapter adapter = new BaseExpandableListAdapter() {
//            int[] logos = new int[]{
//                    R.drawable.fw02,
//                    R.drawable.fw05,
//                    R.drawable.fw06,
//                    R.drawable.fw07
//            };
//            private String[] armTypes = new String[]{
//                    "WORD", "EXCEL", "EMAIL", "PPT"
//            };
//            private String[][] arms = new String[][]{
//                    {"文档编辑", "文档排版", "文档处理", "文档打印"},
//                    {"表格编辑", "表格排版", "表格处理", "表格打印"},
//                    {"收发邮件", "管理邮箱", "登录登出", "注册绑定"},
//                    {"演示编辑", "演示排版", "演示处理", "演示打印"},
//            };
//
//            @Override
//            public int getGroupCount() {
//                return armTypes.length;
//            }
//
//            @Override
//            public int getChildrenCount(int groupPosition) {
//                return arms[groupPosition].length;
//            }
//
//            @Override
//            public Object getGroup(int groupPosition) {
//                return armTypes[groupPosition];
//            }
//
//            @Override
//            public Object getChild(int groupPosition, int childPosition) {
//                return arms[groupPosition][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) {
//                LinearLayout ll = new LinearLayout(MainActivity.this);
//                ll.setOrientation(LinearLayout.HORIZONTAL);
//                ImageView logo = new ImageView(MainActivity.this);
//                logo.setImageResource(logos[groupPosition]);
//                logo.setPadding(36, 15, 0, 0);
//                ll.addView(logo);
//                TextView textView = getTextView();
//                textView.setText(getGroup(groupPosition).toString());
//                textView.setPadding(10, 0, 0, 0);
//                ll.addView(textView);
//                return ll;
//            }
//
//            @Override
//            public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
//                TextView textView = getTextView();
//                textView.setText(getChild(groupPosition, childPosition).toString());
//                return textView;
//            }
//
//            @Override
//            public boolean isChildSelectable(int groupPosition, int childPosition) {
//                return true;
//            }
//
//            @Override
//            public boolean areAllItemsEnabled() {
//                return false;
//            }
//
//            @Override
//            public boolean isEmpty() {
//                return false;
//            }
//
//            @Override
//            public void onGroupExpanded(int groupPosition) {
//
//            }
//
//            @Override
//            public void onGroupCollapsed(int groupPosition) {
//
//            }
//
//            @Override
//            public long getCombinedChildId(long groupId, long childId) {
//                return 0;
//            }
//
//            @Override
//            public long getCombinedGroupId(long groupId) {
//                return 0;
//            }
//
//            private TextView getTextView() {
//                AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
//                TextView textView = new TextView(MainActivity.this);
//                textView.setLayoutParams(lp);
//                textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
//                textView.setPadding(36, 0, 0, 0);
//                textView.setTextSize(20);
//                return textView;
//            }
//        };
//        listView.setAdapter(adapter);
    }

    class MyExpandableListAdapter implements ExpandableListAdapter {
        int[] logos = new int[]{
                R.drawable.fw02,
                R.drawable.fw05,
                R.drawable.fw06,
                R.drawable.fw07
        };
        private String[] armTypes = new String[]{
                "WORD", "EXCEL", "EMAIL", "PPT"
        };
        private String[][] arms = new String[][]{
                {"文档编辑", "文档排版", "文档处理", "文档打印"},
                {"表格编辑", "表格排版", "表格处理", "表格打印"},
                {"收发邮件", "管理邮箱", "登录登出", "注册绑定"},
                {"演示编辑", "演示排版", "演示处理", "演示打印"},
        };
        private int[][] armsImage=new int[][]{
                {R.drawable.fw07,R.drawable.fw06,R.drawable.fw05,R.drawable.fw02,},
                {R.drawable.fw07,R.drawable.fw06,R.drawable.fw05,R.drawable.fw02,},
                {R.drawable.fw07,R.drawable.fw06,R.drawable.fw05,R.drawable.fw02,},
                {R.drawable.fw07,R.drawable.fw06,R.drawable.fw05,R.drawable.fw02,},
        };


        @Override
        public void registerDataSetObserver(DataSetObserver observer) {

        }

        @Override
        public void unregisterDataSetObserver(DataSetObserver observer) {

        }

        @Override
        public int getGroupCount() {
            return armTypes.length;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            return arms[groupPosition].length;
        }

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

        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return arms[groupPosition][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) {
            LinearLayout ll = new LinearLayout(MainActivity.this);
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ImageView logo = new ImageView(MainActivity.this);
            logo.setImageResource(logos[groupPosition]);
            logo.setPadding(36, 15, 0, 0);
            ll.addView(logo);
            TextView textView = getTextView();
            textView.setText(getGroup(groupPosition).toString());
            textView.setPadding(10, 0, 0, 0);
            ll.addView(textView);
            return ll;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            LinearLayout ll=new LinearLayout(MainActivity.this);
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ImageView imageView=new ImageView(MainActivity.this);
            imageView.setImageResource(armsImage[groupPosition][childPosition]);
            imageView.setPadding(50,15,0,0);
            ll.addView(imageView);

            TextView textView = getTextView();
            textView.setText(getChild(groupPosition, childPosition).toString());
            textView.setPadding(5,0,0,0);
            textView.setTextSize(18);
            ll.addView(textView);
            return ll;
        }

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

        @Override
        public boolean areAllItemsEnabled() {
            return false;
        }

        @Override
        public boolean isEmpty() {
            return false;
        }

        @Override
        public void onGroupExpanded(int groupPosition) {

        }

        @Override
        public void onGroupCollapsed(int groupPosition) {

        }

        @Override
        public long getCombinedChildId(long groupId, long childId) {
            return 0;
        }

        @Override
        public long getCombinedGroupId(long groupId) {
            return 0;
        }

        private TextView getTextView() {
            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
            TextView textView = new TextView(MainActivity.this);
            textView.setLayoutParams(lp);
            textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
            textView.setPadding(36, 0, 0, 0);
            textView.setTextSize(20);
            return textView;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值