二级列表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是用的比较频繁的了,然而有些时候,我们不得不涉及到数据的二层展示,类似下面: 那么对于类似这种效果的,我们用 ExpandableListView,二级列表就能很好...

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

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

Android::ExpandableListView二级列表控件的使用

1.在图形界面创建二级列表控件,此控件名为ExpandableList,在Comosite子选单下。 ...

安卓二级列表 ExpandableListView

package text.htss.com.myapplication; import android.content.Context; import android.os.Bundle; impo...

ExpandableListView  (二级列表)使用demo

1.先建立两个item布局  分别为groupItem 和 childItem 2.在主函数xml中创建ExpandableListView   该控件在V7包下 3.写Adapter ...

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

概述顾名思义,ExpandableListView就是可扩展的ListView,主要用于多级列表,适用于购物车、信息查询、部门信息等场景。重要API:expandGroup (int groupPos...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二级列表ExpandableListView
举报原因:
原因补充:

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