二级列表ExpandableListView

原创 2016年05月31日 16:42:38
public class MainActivity extends Activity {


private ExpandableListView elv;
String path="http://169.254.59.7:8080/json/an.json";
private List<Bean> list;
private List<List<Content>> listchild;

Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {

DbUtils db=DbUtils.create(MainActivity.this, "1409A");
list=new ArrayList<Bean>();
try {
//查询到一级列表
list=db.findAll(Bean.class);
//查询二级列表
listchild=new ArrayList<List<Content>>();

for(int i=0;i<list.size();i++){
List<Content> list1= db.findAll(Selector.from(Content.class).where("classname", 


"=", list.get(i).getClassname()));
listchild.add(list1);
}
MyAdapter adapter=new MyAdapter(MainActivity.this, list, listchild);
elv.setAdapter(adapter);
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

};
};



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

elv=(ExpandableListView) findViewById(R.id.elv);

new Thread(){
public void run() {
httpGet();
};
}.start();


}
//解析
public void httpGet(){
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(path);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
String string = EntityUtils.toString(entity,"utf-8");

Gson gson=new Gson();
Bean[] bean = gson.fromJson(string, Bean[].class);
//创建数据库
DbUtils db=DbUtils.create(MainActivity.this, "1409A");

for(int i=0;i<bean.length;i++){
//得到一级列表的数据
Bean b=bean[i];
String classname = b.getClassname();
//将一级列表的数据存入数据库
db.save(b);
//得到二级列表的集合
List<Content> nextcontent = bean[i].getNextcontent();
if(nextcontent!=null){
for(int j=0;j<nextcontent.size();j++){
//得到二级列表的数据
Content content = nextcontent.get(j);
content.setClassname(classname);
//存入数据库(存对象)
db.save(content);
}
}
}

handler.sendEmptyMessage(1);

} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}




//二级标题的点击事件 (注意:需要将适配器中的 isChildSelectable 这个方法的返回值设置成true)
        elv.setOnChildClickListener






//适配器
public class MyAdapter extends BaseExpandableListAdapter{

Context context;
List<Bean> list;
List<List<Content>> listchild;
public MyAdapter(Context context, List<Bean> list, List<List<Content>> listchild) {
super();
this.context = context;
this.list = list;
this.listchild = listchild;
}


@Override
public int getGroupCount() {
return list.size();
}


@Override
public int getChildrenCount(int groupPosition) {
return listchild.get(groupPosition).size();
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View v1=View.inflate(context, android.R.layout.simple_expandable_list_item_2, null);
TextView text1=(TextView) v1.findViewById(android.R.id.text1);
text1.setText(list.get(groupPosition).getClassname());
return v1;
}


@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View v2=View.inflate(context, android.R.layout.simple_expandable_list_item_2, null);
TextView text2=(TextView) v2.findViewById(android.R.id.text2);

String name = listchild.get(groupPosition).get(childPosition).getSclassname();

text2.setText(name);
return v2;
}


@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}


@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}


@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return 0;
}


@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}


@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}





@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}


}

实现ExpandableListView 二级列表,点击二级条目状态的改变

概述顾名思义,ExpandableListView就是可扩展的ListView,主要用于多级列表,适用于购物车、信息查询、部门信息等场景。重要API:expandGroup (int groupPos...
  • BlueOcean2016
  • BlueOcean2016
  • 2016年04月09日 17:17
  • 1639

android端获取网络数据添加到二级列表ExpandableListView

//模拟数据,转换为二维数组格式public class ExUtils { /** * jsonarray格式转成list格式,若为空返回null * @param arr...
  • ZhuoZhuoWei
  • ZhuoZhuoWei
  • 2016年04月14日 12:08
  • 1260

ExpandableListView二级菜单用法

ExpandableListView组件是android中一个比较常用的组件,当点击一个父item的时候可以将它的子item显示出来。大 部分应用都会用到,如QQ的联系人列表,省级联动的二级菜单,资...
  • HUandroid
  • HUandroid
  • 2016年09月06日 19:18
  • 1065

ExpandableListView+Dialog实现弹出二级下拉列表选项。可自由用于Activity和Fragment中

话说今天刚是本人 失业第二天。已经感觉有点无聊了。对于这次失业挺突然的。不过想通之后也没啥可惋惜的。毕竟身怀技术走到哪都不怕找不到饭碗。作为技术人员要做的首要就是不断提高自身技术水平,以适应这个瞬息万...
  • qq_34471736
  • qq_34471736
  • 2017年02月28日 16:36
  • 888

ExpandableListView使用解析(三级列表的实现)

ExpandableListView 使用解析(三级列表的实现)在往常的设计中,往往有类似于QQ的二级列表的样式,而使用ExpandableListView变可以实现这种类似的效果。当然,如果Expa...
  • lisdye2
  • lisdye2
  • 2016年06月16日 17:27
  • 10697

二级列表ExpandableListView的使用

###布局           android:id="@+id/elv"         android:layout_width="fill_parent"         android...
  • qq_35840599
  • qq_35840599
  • 2016年08月11日 17:16
  • 85

教你用两层ExpandableListView嵌套GridView实现三级展示界面

最近项目中使用一个三级展示列表,要求第一级和第二季都可以折叠,并有不同的图标变换,第三层展示数据,可点击。经过一盘折腾,算是实现了,效果就在下面:   思路:  最外层是Expandabl...
  • qq_24531461
  • qq_24531461
  • 2017年06月01日 14:05
  • 281

ExpandableListView多级列表(二级列表)

今天研究下ExpandableListView 多级列表的用法,先来看看效果图: 我们分析下效果图: 1.效果图中左边是一个ListView ,右边是一个ExpandableListView  ,...
  • lijinweii
  • lijinweii
  • 2017年06月13日 16:05
  • 313

Android -- RecyclerView(超简单)实现可展开列表

可展开列表,听到这几个字的时候也许你就会问了,为啥要用 RecyclerView,用Android提供的 ExpandableListView不是更好吗?是的,ExpandableListView是很...
  • chengxu_hou
  • chengxu_hou
  • 2017年04月22日 09:18
  • 9721

ExpandableListView二级分栏详解完美用法

对ExpandableListView控件进行封装(未自定义)直接上代码: 通用ViewHolder类,仅在setImageResource中添加代码 package com.svp.haoyan....
  • Emperor_rock
  • Emperor_rock
  • 2016年05月10日 22:01
  • 2404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二级列表ExpandableListView
举报原因:
原因补充:

(最多只允许输入30个字)