alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Android example source code file (ListOfInternalSelectionViews.java)

This example Android source code file (ListOfInternalSelectionViews.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Android by Example" TM.

Java - Android tags/keywords

activity, android, app, baseadapter, bundle, bundle_param_item_screen_height_factor, bundle_param_num_items, bundle_param_num_rows_per_item, internalselectionview, listofinternalselectionviews, listview, myadapter, object, os, override, string, ui, view, viewgroup, widget

The ListOfInternalSelectionViews.java Android example source code

/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.widget.focus;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.util.InternalSelectionView;

/**
 * A list of {@link InternalSelectionView}s paramatarized by the number of items,
 * how many rows in each item, and how tall each item is.
 */
public class ListOfInternalSelectionViews extends Activity {

    private ListView mListView;


    // keys for initializing via Intent params
    public static final String BUNDLE_PARAM_NUM_ITEMS = "com.google.test.numItems";
    public static final String BUNDLE_PARAM_NUM_ROWS_PER_ITEM = "com.google.test.numRowsPerItem";
    public static final String BUNDLE_PARAM_ITEM_SCREEN_HEIGHT_FACTOR = "com.google.test.itemScreenHeightFactor";

    private int mScreenHeight;

    private int mNumItems = 5;
    private int mNumRowsPerItem = 4;
    private double mItemScreenSizeFactor = 5 / 4;

    public ListView getListView() {
        return mListView;
    }

    /**
     * Each item is screen height * this factor tall.
     */
    public double getItemScreenSizeFactor() {
        return mItemScreenSizeFactor;
    }

    /**
     * @return The number of rows per item.
     */
    public int getNumRowsPerItem() {
        return mNumRowsPerItem;
    }

    /**
     * @return The number of items in the list.
     */
    public int getNumItems() {
        return mNumItems;
    }

    /**
     * @param position The position
     * @return The label (closest thing to a value) for the item at position
     */
    public String getLabelForPosition(int position) {
        return "position " + position;
    }

    /**
     * Get the currently selected view.
     */
    public InternalSelectionView getSelectedView() {
        return (InternalSelectionView) getListView().getSelectedView();
    }

    /**
     * Get the screen height.
     */
    public int getScreenHeight() {
        return mScreenHeight;
    }

    /**
     * Initialize a bundle suitable for sending as the params of the intent that
     * launches this activity.
     * @param numItems The number of items in the list.
     * @param numRowsPerItem The number of rows per item.
     * @param itemScreenHeightFactor see {@link #getScreenHeight()}
     * @return the intialized bundle.
     */
    public static Bundle getBundleFor(int numItems, int numRowsPerItem, double itemScreenHeightFactor) {
        Bundle bundle = new Bundle();
        bundle.putInt(BUNDLE_PARAM_NUM_ITEMS, numItems);
        bundle.putInt(BUNDLE_PARAM_NUM_ROWS_PER_ITEM, numRowsPerItem);
        bundle.putDouble(BUNDLE_PARAM_ITEM_SCREEN_HEIGHT_FACTOR, itemScreenHeightFactor);
        return bundle;
    }

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            initFromBundle(extras);
        }

        mListView = new ListView(this);
        mListView.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        mListView.setDrawSelectorOnTop(false);
        mListView.setAdapter(new MyAdapter());
        mListView.setItemsCanFocus(true);
        setContentView(mListView);
    }

    private void initFromBundle(Bundle icicle) {

        int numItems = icicle.getInt(BUNDLE_PARAM_NUM_ITEMS, -1);
        if (numItems != -1) {
            mNumItems = numItems;
        }
        int numRowsPerItem = icicle.getInt(BUNDLE_PARAM_NUM_ROWS_PER_ITEM, -1);
        if (numRowsPerItem != -1) {
            mNumRowsPerItem = numRowsPerItem;
        }
        double screenHeightFactor = icicle.getDouble(BUNDLE_PARAM_ITEM_SCREEN_HEIGHT_FACTOR, -1.0);
        if (screenHeightFactor > 0) {
            mItemScreenSizeFactor = screenHeightFactor;
        }
    }

    private class MyAdapter extends BaseAdapter {

        public int getCount() {
            return mNumItems;
        }

        public Object getItem(int position) {
            return getLabelForPosition(position);
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            InternalSelectionView item =
                    new InternalSelectionView(
                            parent.getContext(),
                            mNumRowsPerItem,
                            getLabelForPosition(position));
            item.setDesiredHeight((int) (mScreenHeight * mItemScreenSizeFactor));
            return item;
        }
    }
}

Other Android examples (source code examples)

Here is a short list of links related to this Android ListOfInternalSelectionViews.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.