ExpandableListView 动态加载 点击一级菜单时再加载二级菜单的内容实现
2014-10-10 14:19
781 查看
1、加载一级菜单数据
viewAdapter = new ExpandableAdapter(this, groupData);
elv.setAdapter(viewAdapter);
2、响应加载二级菜单数据的监听
elv.setOnGroupClickListener(new OnGroupClickListener(){
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
List<ClassListItem> childData = new ArrayList<ClassListItem>();
String gradeid=(String) mGradeData.get(groupPosition).get("id");
getChildData(gradeid,childData); //获取子菜单数据
groupData.get(groupPosition).addchilddata(childData); //加载子菜单数据
if (groupData.get(groupPosition).checked){
for (int j=0;j<groupData.get(groupPosition).children.size();j++)
groupData.get(groupPosition).children.get(j).checked=true;
}
viewAdapter.notifyDataSetChanged();
return false;
}
});
3、加载获取子菜单数据
private void getChildData(String gradeid,List<ClassListItem> childData){
mClassData=getGradeClassData(gradeid);
for (int j = 0; j < mClassData.size(); j++) {
String classid= (String) mClassData.get(j).get("id");
String classname=(String) mClassData.get(j).get("name");
ClassListItem item = new ClassListItem(classname,classid, false);
childData.add(item);
}
}
4、定义主菜单类
private class GradeGroup {
public String id,name;
private boolean checked;
public List<ClassListItem> children;
public GradeGroup(String gradename,String _gradeid,boolean checked,List<ClassListItem> children){
this.name=gradename;
setChecked(checked);
// this.children=children;
this.id=_gradeid;
addchilddata(children);
}
public boolean getChecked(){
return checked;
}
public void addchilddata(List<ClassListItem> children){
this.children=children;
}
public void setChecked(boolean b){
checked=b;
if(children!=null&&children.size()>0){//若children不为空,循环设置children的checked
for(ClassListItem each : children){
each.checked=checked;
}
}
}
}
5、定义子菜单类
private class ClassListItem {
public String id,name;
public boolean checked;
public ClassListItem(String _name,String _classid,boolean _checked){
name=_name;
id=_classid;
checked=_checked;
}
}
viewAdapter = new ExpandableAdapter(this, groupData);
elv.setAdapter(viewAdapter);
2、响应加载二级菜单数据的监听
elv.setOnGroupClickListener(new OnGroupClickListener(){
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
List<ClassListItem> childData = new ArrayList<ClassListItem>();
String gradeid=(String) mGradeData.get(groupPosition).get("id");
getChildData(gradeid,childData); //获取子菜单数据
groupData.get(groupPosition).addchilddata(childData); //加载子菜单数据
if (groupData.get(groupPosition).checked){
for (int j=0;j<groupData.get(groupPosition).children.size();j++)
groupData.get(groupPosition).children.get(j).checked=true;
}
viewAdapter.notifyDataSetChanged();
return false;
}
});
3、加载获取子菜单数据
private void getChildData(String gradeid,List<ClassListItem> childData){
mClassData=getGradeClassData(gradeid);
for (int j = 0; j < mClassData.size(); j++) {
String classid= (String) mClassData.get(j).get("id");
String classname=(String) mClassData.get(j).get("name");
ClassListItem item = new ClassListItem(classname,classid, false);
childData.add(item);
}
}
4、定义主菜单类
private class GradeGroup {
public String id,name;
private boolean checked;
public List<ClassListItem> children;
public GradeGroup(String gradename,String _gradeid,boolean checked,List<ClassListItem> children){
this.name=gradename;
setChecked(checked);
// this.children=children;
this.id=_gradeid;
addchilddata(children);
}
public boolean getChecked(){
return checked;
}
public void addchilddata(List<ClassListItem> children){
this.children=children;
}
public void setChecked(boolean b){
checked=b;
if(children!=null&&children.size()>0){//若children不为空,循环设置children的checked
for(ClassListItem each : children){
each.checked=checked;
}
}
}
}
5、定义子菜单类
private class ClassListItem {
public String id,name;
public boolean checked;
public ClassListItem(String _name,String _classid,boolean _checked){
name=_name;
id=_classid;
checked=_checked;
}
}
相关文章推荐
- ExpandableListView 实现点击某个group的时候再去请求网络动态加载子视图中的数据
- c#读取XML内容实现动态加载菜单
- js实现二级菜单点击显示当前内容效果
- ExpandableListView 实现二级菜单(笔记)
- ExpandableListView 实现三级菜单中grou_item与child_item点击无响应
- iframe异步加载实现点击左边菜单加载右边内容实例讲解
- 动态建立右键菜单(一级/二级/三级) 响应鼠标单击事件及修改项的内容
- bootStrap异步加载数据(动态加载数据)一二级菜单点击失效的解决办法
- 自定义CursorAdapter,实现ListView中动态加载button,和点击事件
- iframe异步加载实现点击左边菜单加载右边内容实例讲解
- ExpandableListView 根据输入的名称搜索对应的内容并展示,点击可打开二级列表
- 关于Expandablelistview点击一级菜单没反应问题
- 实现ExpandableListView 二级列表,点击二级条目状态的改变
- JQuery实现页面随滚动条滚动而动态加载内容的效果
- android 实现listview动态加载列表项
- 借助HorizontalScrollView实现多列ListView的横向滑动(含动态加载)
- 2011-01-16 21:13 JQuery实现页面随滚动条滚动而动态加载内容的效果
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ListView中加上加FootView和点击按钮动态加载listview
- 点击button按钮动态加载listView