2010.12.29——— android 可伸缩的listview ExpandableList
直接上代码吧 比较简单 大家看一下就明白了
直接上代码吧 比较简单 大家看一下就明白了
package com.huitu.project;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.huitu.pojo.ZFSCLX;
import com.huitu.service.ZFSCLXService;
import com.huitu.util.JSONUtil;
import android.app.AlertDialog;
import android.app.ExpandableListActivity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
public class ZFSCMainActivity extends ExpandableListActivity {
private ExpandableListAdapter mAdapter;
private ProgressDialog pd;
private Handler handler;
private List<Map<String, Object>> groupData = new ArrayList<Map<String, Object>>();
private List<List<Map<String, Object>>> childData = new ArrayList<List<Map<String, Object>>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pd = new ProgressDialog(this);
pd.setIndeterminate(true);
pd.setMessage("加载数据...");
pd.setCancelable(true);
pd.show();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
int length = msg.getData().getInt("length");
switch (length){
case 1 :
pd.dismiss();
setListAdapter(mAdapter);
break;
case 2 :
pd.dismiss();
new AlertDialog.Builder(ZFSCMainActivity.this)
.setMessage("网络异常!")
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//finish();
}
}).create().show();
break;
}
}
};
new Thread(){
Message msg = new Message();
public void run(){
try{
String json = ZFSCLXService.queryZFSCLX(null);
System.out.println(json);
List<ZFSCLX> list_zfsclx= JSONUtil.parseJSON_ZFSCLX_list(json);
for (ZFSCLX bean : list_zfsclx) {
Map<String, Object> curGroupMap = new HashMap<String, Object>();
groupData.add(curGroupMap);
curGroupMap.put("name", bean.getName());
curGroupMap.put("id",bean.getId());
curGroupMap.put("pid",bean.getP_Id());
String json2 = ZFSCLXService.queryZFSCLX(bean.getId());
System.out.println(json2);
List<ZFSCLX> zfsclxitems= JSONUtil.parseJSON_ZFSCLX_list(json2);
List<Map<String, Object>> children = new ArrayList<Map<String, Object>>();
for (ZFSCLX bean2 : zfsclxitems) {
Map<String, Object> curChildMap = new HashMap<String, Object>();
children.add(curChildMap);
curChildMap.put("name", bean2.getName());
curChildMap.put("id",bean2.getId());
curChildMap.put("pid",bean2.getP_Id());
}
childData.add(children);
}
// Set up our adapter
mAdapter = new SimpleExpandableListAdapter(
ZFSCMainActivity.this,
groupData,
android.R.layout.simple_expandable_list_item_1,
new String[] { "name" },
new int[] { android.R.id.text1 },
childData,
android.R.layout.simple_expandable_list_item_1,
new String[] { "name" },
new int[] { android.R.id.text1 }
);
msg.getData().putInt("length", 1);
handler.sendMessage(msg);
}catch(Exception e){
e.printStackTrace();
msg.getData().putInt("length", 2);
handler.sendMessage(msg);
}
}
}.start();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 按下键盘上返回按钮
if (keyCode == KeyEvent.KEYCODE_BACK) {
new AlertDialog.Builder(this)
.setMessage("确定退出系统吗?")
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
})
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
finish();
}
}).show();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 或者下面这种方式
//System.exit(0);
//建议用这种
android.os.Process.killProcess(android.os.Process.myPid());
}
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
String ID = (String)groupData.get(groupPosition).get("id");
Intent intent = new Intent(ZFSCMainActivity.this,ZFSCActivity.class);
Bundle bundle = new Bundle();
bundle.putString("ID", ID);
bundle.putInt("g_index", groupPosition);
bundle.putInt("c_index", childPosition);
bundle.putString("CID", childData.get(groupPosition).get(childPosition).get("id").toString());
intent.putExtras(bundle);
startActivity(intent);
return super.onChildClick(parent, v, groupPosition, childPosition, id);
}
}