public class MainActivity extends Activity {private List group;private List> child;private ExpandableListAdapter adapter;private TextView timeView,durView,delView;private ImageView image;private Handler handler;private int cnt=0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);handler = new Handler();group = new ArrayList();child = new ArrayList>();String g[]= { "test1", "test2", "test3","test3","test3" };String c[][] = {{ "aaa" },{ "a","b","c" },{},{ "111","222" ,"333","111","333","111","222" ,"333"},{}};addgroup( g );addchild( c );adapter = new BaseExpandableListAdapter() {@Overridepublic Object getChild(int groupPosition, int childPosition) {return child.get(childPosition);}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic View getChildView(final int groupPosition, final int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {if (null == convertView || !(convertView instanceof RelativeLayout)) {convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);if(childPosition == 0){Log.d("tag", "group "+groupPosition+" first click");}}image = (ImageView) convertView.findViewById(R.id.image);timeView = (TextView) convertView.findViewById(R.id.title);durView = (TextView) convertView.findViewById(R.id.info);delView = (TextView) convertView.findViewById(R.id.delete);Log.d("tag", "group="+child.size()+",gp="+groupPosition);Log.d("tag", "child="+child.get(groupPosition).size()+",cp="+childPosition);if((child.size() > groupPosition)&&(child.get(groupPosition).size() > childPosition)){timeView.setText(child.get(groupPosition).get(childPosition).toString());durView.setText("test123456");timeView.setVisibility(View.VISIBLE);durView.setVisibility(View.VISIBLE);delView.setVisibility(View.VISIBLE);image.setVisibility(View.VISIBLE);}else {timeView.setVisibility(View.GONE);durView.setVisibility(View.GONE);delView.setVisibility(View.GONE);image.setVisibility(View.GONE);}convertView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "group:"+groupPosition+",child:"+childPosition, Toast.LENGTH_SHORT).show();}});return convertView;}@Overridepublic int getChildrenCount(int groupPosition) {return child.get(groupPosition).size();}@Overridepublic Object getGroup(int groupPosition) {return group.get(groupPosition);}@Overridepublic int getGroupCount() {return group.size();}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic View getGroupView(final int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {LinearLayout ll = new LinearLayout(MainActivity.this);TextView textView = getTextView();textView.setText(getGroup(groupPosition).toString());ll.addView(textView);return ll;}public TextView getTextView() {AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 100);TextView textView = new TextView(MainActivity.this);textView.setLayoutParams(lp);textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);textView.setPadding(80, 0, 0, 0);return textView;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}};ExpandableListView expandListView = (ExpandableListView) findViewById(R.id.list);expandListView.setAdapter(adapter);//test();}private void test(){new Timer().schedule(new TimerTask() {public void run() {cnt=cnt++>20?0:cnt;modifyChildVal(1, cnt);modifyGroupVal(0, cnt);Runnable updater = new Runnable() {public void run() {((BaseExpandableListAdapter) adapter).notifyDataSetChanged();}};handler.post(updater);};}, 0, 3000);}public void addgroup(String[] c) {for (int i = 0; i < c.length; i++) {group.add(c[i]);}}public void addchild(String[][] c) {for (int i = 0; i < c.length; i++) {List tmpList = new ArrayList();for (int j = 0; j < c[i].length; j++) {tmpList.add(c[i][j]);}child.add(tmpList);}}public void modifyChildVal(int index, int s) {List tmpList = child.get(index);String tmp = s+"";tmpList.set(0, tmp);child.set(index, tmpList);}public void modifyGroupVal(int index, int s) {String tmp = "abc"+s;group.set(index, tmp);}}

布局:

<?xml version="1.0" encoding="utf-8"?>        
列表项布局:

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                              

效果:

android折叠展开自定义列表项测试_第1张图片

更多相关文章

  1. Android 开源项目列表
  2. android 动态 布局
  3. android:布局参数,控件属性及各种xml的作用
  4. Android布局案例之人人android九宫格
  5. Android中布局的巧妙设计【android进化二十六】
  6. Android之LinearLayout线性布局
  7. 深入探索Android布局优化(下)

随机推荐

  1. Android仿微信二维码和条形码
  2. 添加接口节点
  3. android 简单实现沉浸式状态栏效果
  4. cordova生成android的app项目目录后运行c
  5. Android Mac下反编译apk
  6. Bytecode for the Dalvik VM
  7. android https之三
  8. android中系统日期时间的获取
  9. Android中用SP(SharedPreferences)保存数据
  10. android RecyclerView获得单个Item的View