Code example for ExpandableListView

Methods: setAdaptersetOnChildClickListenersetOnGroupCollapseListenersetOnGroupExpandListener, setEmptyView

0
 
	public void setListAdapter(ExpandableListAdapter adapter) {
		boolean hadAdapter = mAdapter != null;
		mAdapter = adapter;
		if (mList != null) {
			mList.setAdapter(adapter);
			if (!mListShown && !hadAdapter) {
				// The list was hidden, and previously didn't have an 
				// adapter. It is now time to show it. 
				setListShown(true, getView().getWindowToken() != null);
			} 
		} 
	} 
 
	public void setSelection(int position) {
		ensureList(); 
		mList.setSelection(position);
	} 
 
	public long getSelectedPosition() { 
		ensureList(); 
		return mList.getSelectedPosition();
	} 
 
	public long getSelectedId() { 
		ensureList(); 
		return mList.getSelectedId();
	} 
 
	public ExpandableListView getExpandableListView() {
		ensureList(); 
		return mList;
	} 
 
	public void setEmptyText(CharSequence text) {
		ensureList(); 
		if (mStandardEmptyView == null) {
			throw new IllegalStateException(
					"Can't be used with a custom content view"); 
		} 
		mStandardEmptyView.setText(text);
		if (!mSetEmptyText) {
			mList.setEmptyView(mStandardEmptyView);
			mSetEmptyText = true;
		} 
	} 
 
	public void setListShown(boolean shown) {
		setListShown(shown, true);
	} 
 
	public void setListShownNoAnimation(boolean shown) {
		setListShown(shown, false);
	} 
 
	private void setListShown(boolean shown, boolean animate) {
		ensureList(); 
		if (mListShown == shown) {
			return; 
		} 
		mListShown = shown;
		if (mListContainer != null) {
			if (shown) {
				if (animate) {
					mListContainer.startAnimation(AnimationUtils.loadAnimation(
							getActivity(), android.R.anim.fade_in));
				} 
				mListContainer.setVisibility(View.VISIBLE);
			} else { 
				if (animate) {
					mListContainer.startAnimation(AnimationUtils.loadAnimation(
							getActivity(), android.R.anim.fade_out));
				} 
				mListContainer.setVisibility(View.GONE);
			} 
		} 
	} 
 
	public ExpandableListAdapter getExpandableListAdapter() {
		return mAdapter;
	} 
 
	private void ensureList() { 
		if (mList != null) {
			return; 
		} 
		View root = getView();
		if (root == null) {
			throw new IllegalStateException("Content view not yet created");
		} 
		if (root instanceof ExpandableListView) {
			mList = (ExpandableListView) root;
		} else { 
			mStandardEmptyView = (TextView) root
					.findViewById(INTERNAL_EMPTY_ID);
			if (mStandardEmptyView == null) {
				mEmptyView = root.findViewById(android.R.id.empty);
			} 
			mListContainer = root.findViewById(INTERNAL_LIST_CONTAINER_ID);
			View rawListView = root.findViewById(android.R.id.list);
			if (!(rawListView instanceof ExpandableListView)) {
				if (rawListView == null) {
					throw new RuntimeException(
							"Your content must have a ExpandableListView whose id attribute is " 
									+ "'android.R.id.list'"); 
				} 
				throw new RuntimeException(
						"Content has view with id attribute 'android.R.id.list' " 
								+ "that is not a ExpandableListView class"); 
			} 
			mList = (ExpandableListView) rawListView;
			if (mEmptyView != null) {
				mList.setEmptyView(mEmptyView);
			} 
		} 
		mListShown = true;
		mList.setOnItemClickListener(mOnClickListener);
		if (mAdapter != null) {
			setListAdapter(mAdapter);
		} else { 
			// We are starting without an adapter, so assume we won't 
			// have our data right away and start with the progress indicator. 
			setListShown(false, false); 
		} 
		mHandler.post(mRequestFocus);
	} 
 
	@Override 
	public void onGroupExpand(int arg0) {
	} 
 
	@Override 
	public void onGroupCollapse(int arg0) {
	} 
 
	@Override 
	public boolean onChildClick(ExpandableListView arg0, View arg1, int arg2,
			int arg3, long arg4) {
		return false; 
	} 
 
	@Override 
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
	} 
 
	public void onContentChanged() { 
		View emptyView = getView().findViewById(android.R.id.empty);
		mList = (ExpandableListView) getView().findViewById(android.R.id.list);
		if (mList == null) {
			throw new RuntimeException(
					"Your content must have a ExpandableListView whose id attribute is " 
							+ "'android.R.id.list'"); 
		} 
		if (emptyView != null) {
			mList.setEmptyView(emptyView);
		} 
		mList.setOnChildClickListener(this);
		mList.setOnGroupExpandListener(this);
		mList.setOnGroupCollapseListener(this);
 
		if (mFinishedStart) {
			setListAdapter(mAdapter);
		} 
		mFinishedStart = true;