自定义Expandable ,QQ显示效果

 

今天发现ExpandableListAdapter 用起来挺麻烦的, 要建很多个map 数据对象,感觉特别烦, 自己索性写了一个list 的adapter  ,自己鼓捣了一下 写了一个扩展的自定义的Expand  类似QQ的样子, 其实也没什么,主要是继承 BaseExpandableListAdapter , 这个adpter 跟baseadpter没什么区别,主要是覆盖的东西挺多的。 然后就是自定义数据, 界面显示,主要是搭一个架子, 想扩展的,美化效果的,可以自定义style 什么的。自己弄弄很简单的。

/*
 * @project PhotoGallery
 * @package com.android.photogallery
 * @file ExpandableActivity.java
 * @version  1.0
 * @author   廖益平
 */
package com.android.photogallery;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ExpandableActivity extends Activity{
	/*
	 *
	 * Class Descripton goes here.
	 *
	 * @class ExpandableActivity
	 * @version  1.0
	 * @author   廖益平
	 * @time  2011-11-17 上午06:52:18
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.expand);
		ExpandableListView listView = (ExpandableListView) findViewById(R.id.expand);
		
		List<Student> stuList = new ArrayList<Student>();
		//stuList
		List list = new ArrayList();
		List resoucelist = new ArrayList();
		/**
		 *  反射机制获取资源图片id的值
		 */
		Field[] f = R.drawable.class.getDeclaredFields();
		for (Field field : f) {
			try {
				resoucelist.add(field.get(null));
				System.out.println("value : "+field.getDouble(null));
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		
		list.add("小A");
		list.add("小B");
		list.add("小C");
		list.add("小D");
		stuList.add(new Student("同学", list, resoucelist));
		list = new ArrayList();
		list.add("大A");
		list.add("大B");
		list.add("大C");
		list.add("大D");
		stuList.add(new Student("朋友", list, resoucelist));
		listView.setAdapter(new myExpandable(stuList));
		
	}
	
	/**
	 * 
	 * <code>myExpandable</code>
	 * @description: TODO(自定义) 
	 * @version  1.0
	 * @author   廖益平
	 * @since 2011-11-17
	 */
	class myExpandable extends BaseExpandableListAdapter{
		
		private List<Student> source;
		
		public myExpandable(List<Student> stuList){
			this.source = stuList;
		}
		@Override
		public Object getChild(int groupPosition, int childPosition) {
		
			return source.get(groupPosition).object.get(childPosition);
		}

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

		@Override
		public View getChildView(int groupPosition, int childPosition,
				boolean isLastChild, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			LayoutInflater inflater = getLayoutInflater();
			LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.parent, null);
			ImageView photo = (ImageView) layout.findViewById(R.id.image);
			TextView name = (TextView) layout.findViewById(R.id.name);
			
			
			photo.setImageBitmap(BitmapFactory.decodeResource(getResources(),
						source.get(groupPosition).souceId.get(childPosition)));
			
			name.setText(source.get(groupPosition).object.get(childPosition).toString());
			return layout;

		}

		@Override
		public int getChildrenCount(int groupPosition) {
			// TODO Auto-generated method stub
			return source.get(groupPosition).getObject().size();
		}

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

		@Override
		public int getGroupCount() {
			// TODO Auto-generated method stub
			return source.size();
		}

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

		@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
				TextView tv=new TextView(ExpandableActivity.this);

				tv.setText(source.get(groupPosition).getName());
				tv.setTextSize(20);
				tv.setLayoutParams(new ExpandableListView.LayoutParams(ExpandableListView.LayoutParams.FILL_PARENT,30));

				return tv;
		}

		@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;
		}
		
	}
	class Student{
		private List<Integer> souceId = new ArrayList<Integer>();
		public Student(String name,List<Object> st ,List<Integer> souceid){
			this.name =name;
			this.object = st;
			this.souceId  = souceid;
		}
		private String name;
		private List<Object> object;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public List<Object> getObject() {
			return object;
		}
		public void setObject(List<Object> object) {
			this.object = object;
		}
	}
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值