当前位置: 代码迷 >> Android >> android 支持分组跟联系人展示的一个小例子
  详细解决方案

android 支持分组跟联系人展示的一个小例子

热度:14   发布时间:2016-04-28 04:34:17.0
android 支持分组和联系人展示的一个小例子

先看效果图:




要实现这个效果,activity必须实现ExpandableListActivity

	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		requestWindowFeature(Window.FEATURE_NO_TITLE);		setContentView(R.layout.main);		mContactListView = getExpandableListView();		mContactListView.setBackgroundResource(R.drawable.default_bg);		registerForContextMenu(mContactListView);		mContactDataBase = ((ContactApplication) getApplication())				.getmContactDataBase();		getExpandableListView().setCacheColorHint(0);// 拖动时避免出现黑色		getExpandableListView().setDivider(null);// 去掉每项下面的黑线(分割线)		// 自定义下拉图标		getExpandableListView().setGroupIndicator(				getResources().getDrawable(R.drawable.expander_ic_folder));		setAdatperForExpandableListView();	}	/**	 * 设置ExpandableListView的adapter	 */	private void setAdatperForExpandableListView() {		Cursor groupCursor = mContactDataBase.getAllGroups();  //这个是从数据库里查询出所有的组		Util.d(TAG, "groupCursor=" + groupCursor);		// curosr的生命周期将和activity有关		startManagingCursor(groupCursor);		// set my adapter		<strong>ContactTreeAdapter </strong>contactTreeAdapter = new ContactTreeAdapter(				groupCursor, this, true, mContactDataBase);		setListAdapter(contactTreeAdapter);	}

主要实现ContactTreeAdapter这个adapter

public class ContactTreeAdapter extends CursorTreeAdapter {	/** log tag. */	private static final String TAG = "ContactTreeAdapter";	/** context */	public Context mContext = null;	private Cursor mCursor = null;	private ContactDataBase mContactDataBase;	// contact表字段索引	private static final int INDEX_NAME = 1;	private static final int INDEX_PHONENUMBER = 2;	// group表字段索引	private static final int INDEX_GROUPNAME = 1;	public ContactTreeAdapter(Cursor cursor, Context context,			boolean autoRequery, ContactDataBase contactDataBase) {		super(cursor, context, autoRequery);		mContext = context;		this.mContactDataBase = contactDataBase;		// TODO Auto-generated constructor stub	}	@Override	protected Cursor getChildrenCursor(Cursor groupCursor) {		// TODO Auto-generated method stub		String groupName = groupCursor.getString(INDEX_GROUPNAME);// 得到当前的组名		Cursor childCursor = mContactDataBase.getContactsByGroupName(groupName);		return childCursor;	}	@Override	protected View newGroupView(Context context, Cursor cursor,			boolean isExpanded, ViewGroup parent) {		// TODO Auto-generated method stub		Util.d(TAG, "newGroupView");		LayoutInflater inflate = LayoutInflater.from(mContext);		View view = inflate.inflate(R.layout.grouplayout, null);		bindGroupView(view, context, cursor, isExpanded);		return view;	}	@Override	protected void bindGroupView(View view, Context context, Cursor cursor,			boolean isExpanded) {		// TODO Auto-generated method stub		Util.d(TAG, "bindGroupView");		TextView groupName = (TextView) view.findViewById(R.id.groupName);		String group = cursor.getString(INDEX_GROUPNAME);		groupName.setText(group);		TextView groupCount = (TextView) view.findViewById(R.id.groupCount);		int count = mContactDataBase.getCountContactByGroupName(group);		Util.d(TAG, "count=" + count + "group=" + group);		groupCount.setText("[" + count + "]");	}	@Override	protected View newChildView(Context context, Cursor cursor,			boolean isLastChild, ViewGroup parent) {		// TODO Auto-generated method stub		Util.d(TAG, "newChildView");		LayoutInflater inflate = LayoutInflater.from(mContext);		View view = inflate.inflate(R.layout.childlayout, null);		bindChildView(view, context, cursor, isLastChild);		return view;	}	@Override	protected void bindChildView(View view, Context context, Cursor cursor,			boolean isLastChild) {		// TODO Auto-generated method stub		Util.d(TAG, "bindChildView cursor.getString(INDEX_PHONENUMBER)="				+ cursor.getString(INDEX_PHONENUMBER));		TextView name = (TextView) view.findViewById(R.id.name);		name.setText(cursor.getString(INDEX_NAME));		TextView description = (TextView) view.findViewById(R.id.description);		description.setTextKeepState(cursor.getString(INDEX_PHONENUMBER));	}}<strong></strong>

因为这个adapter的函数命名就可以看出是干什么的就不一一解释了

代码可以在http://download.csdn.net/detail/baidu_nod/7684649下载

  相关解决方案