Code example for GridView

Methods: setAdaptersetSelection, setEmptyView, setOnItemClickListener

0
	 */ 
	public void setGridAdapter(ListAdapter adapter) {
		boolean hadAdapter = mAdapter != null;
		mAdapter = adapter;
		if (mGrid != null) {
			mGrid.setAdapter(adapter);
			if (!mGridShown && !hadAdapter) {
				// The list was hidden, and previously didn't have an 
				// adapter. It is now time to show it. 
				setGridShown(true, getView().getWindowToken() != null);
			} 
		} 
	} 
 
	/** 
	 * Set the currently selected list item to the specified position with the 
	 * adapter's data 
	 *  
	 * @param position 
	 */ 
	public void setSelection(int position) {
		ensureGrid(); 
		mGrid.setSelection(position);
	} 
 
	/** 
	 * Get the position of the currently selected list item. 
	 */ 
	public int getSelectedItemPosition() { 
		ensureGrid(); 
		return mGrid.getSelectedItemPosition();
	} 
 
	/** 
	 * Get the cursor row ID of the currently selected list item. 
	 */ 
	public long getSelectedItemId() { 
		ensureGrid(); 
		return mGrid.getSelectedItemId();
	} 
 
	/** 
	 * Get the activity's list view widget. 
	 */ 
	public GridView getGridView() {
		ensureGrid(); 
		return mGrid;
	} 
 
	/** 
	 * The default content for a ListFragment has a TextView that can be shown 
	 * when the list is empty. If you would like to have it shown, call this 
	 * method to supply the text it should use. 
	 */ 
	public void setEmptyText(CharSequence text) {
		ensureGrid(); 
		if (mStandardEmptyView == null) {
			throw new IllegalStateException(
					"Can't be used with a custom content view"); 
		} 
		mStandardEmptyView.setText(text);
		if (mEmptyText == null) {
			mGrid.setEmptyView(mStandardEmptyView);
		} 
		mEmptyText = text;
	} 
 
	/** 
	 * Control whether the list is being displayed. You can make it not 
	 * displayed if you are waiting for the initial data to show in it. During 
	 * this time an indeterminant progress indicator will be shown instead. 
	 *  
	 * <p> 
	 * Applications do not normally need to use this themselves. The default 
	 * behavior of ListFragment is to start with the list not being shown, only 
	 * showing it once an adapter is given with 
	 * {@link #setGridAdapter(ListAdapter)}. If the list at that point had not 
	 * been shown, when it does get shown it will be do without the user ever 
	 * seeing the hidden state. 
	 *  
	 * @param shown 
	 *            If true, the list view is shown; if false, the progress 
	 *            indicator. The initial value is true. 
	 */ 
	public void setGridShown(boolean shown) {
		setGridShown(shown, true);
	} 
 
	/** 
	 * Like {@link #setGridShown(boolean)}, but no animation is used when 
	 * transitioning from the previous state. 
	 */ 
	public void setGridShownNoAnimation(boolean shown) {
		setGridShown(shown, false);
	} 
 
	/** 
	 * Control whether the list is being displayed. You can make it not 
	 * displayed if you are waiting for the initial data to show in it. During 
	 * this time an indeterminant progress indicator will be shown instead. 
	 *  
	 * @param shown 
	 *            If true, the list view is shown; if false, the progress 
	 *            indicator. The initial value is true. 
	 * @param animate 
	 *            If true, an animation will be used to transition to the new 
	 *            state. 
	 */ 
	private void setGridShown(boolean shown, boolean animate) {
		ensureGrid(); 
		if (mProgressContainer == null) {
			throw new IllegalStateException(
					"Can't be used with a custom content view"); 
		} 
		if (mGridShown == shown) {
			return; 
		} 
		mGridShown = shown;
		if (shown) {
			if (animate) {
				mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
						getActivity(), android.R.anim.fade_out));
				mGridContainer.startAnimation(AnimationUtils.loadAnimation(
						getActivity(), android.R.anim.fade_in));
			} else { 
				mProgressContainer.clearAnimation();
				mGridContainer.clearAnimation();
			} 
			mProgressContainer.setVisibility(View.GONE);
			mGridContainer.setVisibility(View.VISIBLE);
		} else { 
			if (animate) {
				mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
						getActivity(), android.R.anim.fade_in));
				mGridContainer.startAnimation(AnimationUtils.loadAnimation(
						getActivity(), android.R.anim.fade_out));
			} else { 
				mProgressContainer.clearAnimation();
				mGridContainer.clearAnimation();
			} 
			mProgressContainer.setVisibility(View.VISIBLE);
			mGridContainer.setVisibility(View.GONE);
		} 
	} 
 
	/** 
	 * Get the ListAdapter associated with this activity's GridView. 
	 */ 
	public ListAdapter getGridAdapter() {
		return mAdapter;
	} 
 
	private void ensureGrid() { 
		if (mGrid != null) {
			return; 
		} 
		View root = getView();
		if (root == null) {
			throw new IllegalStateException("Content view not yet created");
		} 
		if (root instanceof GridView) {
			mGrid = (GridView) root;
		} else { 
			mStandardEmptyView = (TextView) root
					.findViewById(INTERNAL_EMPTY_ID);
			if (mStandardEmptyView == null) {
				mEmptyView = root.findViewById(android.R.id.empty);
			} else { 
				mStandardEmptyView.setVisibility(View.GONE);
			} 
			mProgressContainer = root
					.findViewById(INTERNAL_PROGRESS_CONTAINER_ID);
			mGridContainer = root.findViewById(INTERNAL_GRID_CONTAINER_ID);
			View rawGridView = root.findViewById(android.R.id.list);
			if (!(rawGridView instanceof GridView)) {
				if (rawGridView == null) {
					throw new RuntimeException(
							"Your content must have a GridView 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 GridView class"); 
			} 
			mGrid = (GridView) rawGridView;
			if (mEmptyView != null) {
				mGrid.setEmptyView(mEmptyView);
			} else if (mEmptyText != null) {
				mStandardEmptyView.setText(mEmptyText);
				mGrid.setEmptyView(mStandardEmptyView);
			} 
		} 
		mGridShown = true;
		mGrid.setOnItemClickListener(mOnClickListener);
		if (mAdapter != null) {
			ListAdapter adapter = mAdapter;
			mAdapter = null;
			setGridAdapter(adapter);
		} else {