标签:show ret lap span print pad 获取 last for
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
标签:show ret lap span print pad 获取 last for
原文地址:http://www.cnblogs.com/zCoderJoy/p/6942391.html