二级列表ExpandableListView的使用
2016-08-11 17:16
447 查看
###布局
<ExpandableListView
android:id="@+id/elv"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ExpandableListView>
###MainActivity
public class MainActivity extends Activity {
private ExpandableListView elv;
String [] group=new String[]{
"港台明星", "大陆明星", "欧美明星", "日韩明星"
};
String[][]child=new String[][]{
{"刘德华","小猪","周总","林志玲","老游"},{"老程","栋栋","樊姐"},{"MJ","kobe","库里"},{"权志龙","宋仲基","允儿","倍倍"}
};
private WXAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
elv=(ExpandableListView) findViewById(R.id.elv);
adapter=new WXAdapter(MainActivity.this,group,child);
elv.setAdapter(adapter);
elv.invalidateViews();
elv.setGroupIndicator(getResources().getDrawable(R.drawable.indicator));
elv.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(MainActivity.this, groupPosition+"二级列表监听"+childPosition, 0).show();
return false;
}
});
//一级列表关闭监听
elv.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(MainActivity.this, groupPosition+"组关闭了", 0).show();
}
});
//一级列表展开监听
elv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(MainActivity.this, groupPosition+"组展开了", 0).show();
/**
* 展开组时,关闭其他组
*/
for(int i=0;i<adapter.getGroupCount();i++){
if(i!=groupPosition){
elv.collapseGroup(i);
}
}
}
});
}
}
###适配器
public class WXAdapter extends BaseExpandableListAdapter {
MainActivity mainActivity;
String[]group;
String[][]child;
public WXAdapter(MainActivity mainActivity, String[] group, String[][] child) {
this.mainActivity=mainActivity;
this.group=group;
this.child=child;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
//二级列表的视图
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View view=View.inflate(mainActivity, android.R.layout.simple_expandable_list_item_2, null);
TextView text2=(TextView) view.findViewById(android.R.id.text1);
text2.setText(child[groupPosition][childPosition]);
return view;
}
//当前一级列表下有多少个子列表
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return child[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}
//一级列表的个数
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return group.length;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return 0;
}
//一级列表的视图
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View view=View.inflate(mainActivity, android.R.layout.simple_expandable_list_item_2, null);
TextView text1=(TextView) view.findViewById(android.R.id.text1);
text1.setText(group[groupPosition]);
return view;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
<ExpandableListView
android:id="@+id/elv"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ExpandableListView>
###MainActivity
public class MainActivity extends Activity {
private ExpandableListView elv;
String [] group=new String[]{
"港台明星", "大陆明星", "欧美明星", "日韩明星"
};
String[][]child=new String[][]{
{"刘德华","小猪","周总","林志玲","老游"},{"老程","栋栋","樊姐"},{"MJ","kobe","库里"},{"权志龙","宋仲基","允儿","倍倍"}
};
private WXAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
elv=(ExpandableListView) findViewById(R.id.elv);
adapter=new WXAdapter(MainActivity.this,group,child);
elv.setAdapter(adapter);
elv.invalidateViews();
elv.setGroupIndicator(getResources().getDrawable(R.drawable.indicator));
elv.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(MainActivity.this, groupPosition+"二级列表监听"+childPosition, 0).show();
return false;
}
});
//一级列表关闭监听
elv.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(MainActivity.this, groupPosition+"组关闭了", 0).show();
}
});
//一级列表展开监听
elv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(MainActivity.this, groupPosition+"组展开了", 0).show();
/**
* 展开组时,关闭其他组
*/
for(int i=0;i<adapter.getGroupCount();i++){
if(i!=groupPosition){
elv.collapseGroup(i);
}
}
}
});
}
}
###适配器
public class WXAdapter extends BaseExpandableListAdapter {
MainActivity mainActivity;
String[]group;
String[][]child;
public WXAdapter(MainActivity mainActivity, String[] group, String[][] child) {
this.mainActivity=mainActivity;
this.group=group;
this.child=child;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
//二级列表的视图
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View view=View.inflate(mainActivity, android.R.layout.simple_expandable_list_item_2, null);
TextView text2=(TextView) view.findViewById(android.R.id.text1);
text2.setText(child[groupPosition][childPosition]);
return view;
}
//当前一级列表下有多少个子列表
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return child[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}
//一级列表的个数
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return group.length;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return 0;
}
//一级列表的视图
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View view=View.inflate(mainActivity, android.R.layout.simple_expandable_list_item_2, null);
TextView text1=(TextView) view.findViewById(android.R.id.text1);
text1.setText(group[groupPosition]);
return view;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
相关文章推荐
- 追溯-----ExpandableListView,二级列表的基本使用
- ExpandableListView (二级列表)使用demo
- Android::ExpandableListView二级列表控件的使用
- 【深入篇】自定义ExpandableListView,实现二级列表效果
- Android ExpandableListView展开列表控件使用实例
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- ExpandableListView二级列表
- ExpandableListView 二级展开列表
- Android开发系列(九) ExpandableListView进阶使用——QQ联系人列表(升级版)
- Android中级联列表ExpandableListView使用
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- Android基础入门教程——2.4.12 ExpandableListView(可折叠列表)的基本使用
- ExpandableListView的使用,实现类似QQ好友列表
- PinnedHeaderExpandableListView,可固定顶部标题的二级列表菜单
- 一看就会Android之分组列表组件ExpandableListView的使用
- Android中可展开的列表组件(ExpandableListView)的使用
- android_ExpandableListView 下拉列表使用
- 二级列表ExpandableListView
- 实现ExpandableListView 二级列表,点击二级条目状态的改变
- ExpandableListView(二级ListView)的使用