zoukankan      html  css  js  c++  java
  • android-基础编程-ExpandableListview

    ExpandableListView继承ListView,具有LIstVIew的基本功能。此外具有group/child,由组与子元素组成。

    1.布局主要有是三个。

    a.主布局:

    <ExpandableListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/expandlistview"
            android:dividerHeight="5dp"
            android:background="#ffffff"
            android:divider="@drawable/expandchilddivide"
            android:childDivider="#000000"
             />

    b.Group布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/group_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dip"
            android:paddingBottom="10dip"
            android:gravity="center_horizontal"
            android:text="122"
            />
    
    </LinearLayout>

    c.Child布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
            <TextView
                android:id="@+id/textOne"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="1"
                />
            <TextView
                android:id="@+id/textTwo"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="2"
                />
            <TextView
                android:id="@+id/textThree"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="3"
                />
        </LinearLayout>
    </LinearLayout>

    2.代码生成 类似adapter 创建adapter(ExpandableListAdapter、BaseExpandableListAdapter、SimpleExpandableListAdapter 依次继承关系)

    a.创建adapter

    //自定义适配器
        class Adapter extends BaseExpandableListAdapter {
            //获取子元素对象
            @Override
            public Object getChild(int groupPosition, int childPosition) {
                return null;
            }
    
            //获取子元素Id
            @Override
            public long getChildId(int groupPosition, int childPosition) {
                return childPosition;
            }
    
            //加载子元素并显示
            @Override
            public View getChildView(final int groupPosition, final int childPosition,
                                     boolean isLastChild, View convertView, ViewGroup parent) {
                View view = null;
                ChildHolder childholder = null;
                if (convertView != null) {
                    view = convertView;
                    childholder = (ChildHolder) view.getTag();
                } else {
                    view = View.inflate(ExpandableListViewActi.this, R.layout.expand_child, null);
                    childholder = new ChildHolder();
                    //childholder.mImage = (ImageView) view.findViewById(R.id.image);
                    childholder.mPrice = (TextView) view.findViewById(R.id.textTwo);
                    childholder.mStateText = (TextView) view.findViewById(R.id.textOne);
                    childholder.mSecondPrice = (TextView) view.findViewById(R.id.textThree);
                    view.setTag(childholder);
                }
    //            childholder.mImage.setOnClickListener(new OnClickListener() {
    //                @Override
    //                public void onClick(View v) {
    //                    Toast.makeText(MainActivity.this, "第"+groupPosition+"组的第"+childPosition+"圖標被点击了", 0).show();
    //                }
    //            });
                childholder.mPrice.setText(child_list.get(groupPosition));
                int len = group_list.size();
                System.out.println(len + "-----------------");
                childholder.mStateText.setText(child_list.get(groupPosition));
                childholder.mSecondPrice.setText(child_list.get(groupPosition));
                return view;
            }
    
            //获取子元素数目
            @Override
            public int getChildrenCount(int groupPosition) {
                return child_list.size();
            }
    
            //获取组元素对象
            @Override
            public Object getGroup(int groupPosition) {
                return group_list.get(groupPosition);
            }
    
            //获取组元素数目
            @Override
            public int getGroupCount() {
                return group_list.size();
            }
    
            //获取组元素Id
            @Override
            public long getGroupId(int groupPosition) {
                return groupPosition;
            }
    
            //加载并显示组元素
            @Override
            public View getGroupView(int groupPosition, boolean isExpanded,
                                     View convertView, ViewGroup parent) {
                View view = null;
                GroupHolder groupholder = null;
                if (convertView != null) {
                    view = convertView;
                    groupholder = (GroupHolder) view.getTag();
                } else {
                    view = View.inflate(ExpandableListViewActi.this, R.layout.expand_group, null);
                    groupholder = new GroupHolder();
                    groupholder.mSpaceText = (TextView) view.findViewById(R.id.group_text);
                    view.setTag(groupholder);
                }
                groupholder.mSpaceText.setText(group_list.get(groupPosition));
                return view;
            }
    
            @Override
            public boolean hasStableIds() {
    
                return true;
            }
    
    
            @Override
            public boolean isChildSelectable(int groupPosition, int childPosition) {
    
                return true;
            }
    
        }

    b.生成主界面代码,设置adapter .expandable四中点击相应事件。

    private void initView() {
            mListView = (ExpandableListView) findViewById(R.id.expandlistview);
            mInflater = LayoutInflater.from(ExpandableListViewActi.this);
            group_list = new ArrayList<String>();
            for (int i = 0; i < 5; i++) {
                group_list.add("zcx");
                child_list.add("child");
            }
            Adapter adapter = new Adapter();
            //mListView.setGroupIndicator(null);
    
            /**
             * ExpandableListView的组监听事件
             */
    //        mListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
    //
    //            @Override
    //            public boolean onGroupClick(ExpandableListView parent, View v,
    //                                        int groupPosition, long id) {
    //                Toast.makeText(ExpandableListViewActi.this, "第" + groupPosition + "组被点击了", 0).show();
    //                return true;
    //            }
    //        });
            /**
             * ExpandableListView的组展开监听
             */
            mListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
    
                @Override
                public void onGroupExpand(int groupPosition) {
                    Toast.makeText(ExpandableListViewActi.this, "第" + groupPosition + "组展开", 0).show();
                }
            });
            /**
             * ExpandableListView的组合拢监听
             */
            mListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
    
                @Override
                public void onGroupCollapse(int groupPosition) {
                    Toast.makeText(ExpandableListViewActi.this, "第" + groupPosition + "组合拢", 0).show();
                }
            });
            /**
             * ExpandableListView的子元素点击监听
             */
            mListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
    
                @Override
                public boolean onChildClick(ExpandableListView parent, View v,
                                            int groupPosition, int childPosition, long id) {
                    Toast.makeText(ExpandableListViewActi.this, "第" + groupPosition + "组的第" + childPosition + "被点击了", 0).show();
                    return true;
                }
            });
    
            mListView.setAdapter(adapter);
    //        int groupCount = mListView.getCount();
    //        for(int i=0;i<groupCount;i++){
    //            mListView.expandGroup(i);
    //        }
        }

    3.效果图

  • 相关阅读:
    AI芯片:高性能卷积计算中的数据复用
    矩阵乘法加速器的设计框架
    NVDLA中Winograd卷积的设计
    神经网络加速器应用实例:图像分类
    Simple TPU的设计和性能评估
    TPU中的指令并行和数据并行
    TPU中的脉动阵列及其实现
    动手写一个简单版的谷歌TPU
    利用Xilinx HLS实现LDPC译码器
    FPGA上如何求32个输入的最大值和次大值:分治
  • 原文地址:https://www.cnblogs.com/zCoderJoy/p/6942391.html
Copyright © 2011-2022 走看看