首页 > 代码库 > android-基础编程-ExpandableListview
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.效果图
android-基础编程-ExpandableListview
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。