Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 支持分組和聯系人展示的一個小例子

android 支持分組和聯系人展示的一個小例子

編輯:關於Android編程

先看效果圖:

\



<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+0qrKtc/W1eK49tCnufujrGFjdGl2aXR5sdjQ68q1z9ZFeHBhbmRhYmxlTGlzdEFjdGl2aXR5PC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;"> @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 ContactTreeAdapter 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));
	}

}

因為這個adapter的函數命名就可以看出是干什麼的就不一一解釋了


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved