atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
Androidアプリ開発ノート
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Androidアプリ開発ノート
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Androidアプリ開発ノート
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • Androidアプリ開発ノート
  • ListViewの応用

Androidアプリ開発ノート

ListViewの応用

最終更新:2012年10月04日 09:46

conn

- view
だれでも歓迎! 編集

ListViewの使用

値の一覧を表示したり、一覧から選択するのに使用する。
予め ScrollViewインタフェースが実装してあり、スクロールを利用して擬似的に Spinnerのような使い方もできる。

使い方

ListViewクラスと ListAdapterインターフェースの実装を組み合わせて使用する。

ちょっと面倒だけど、上手いこと使うとSpinnerよりも快適な使用感を演出してくれる。
ListViewクラスの高さをリストの1アイテム分程度に絞り、スクロールされるたびに表示されているアイテムの選択とみなし、スクロール位置を微調整してやればよい。
必要な処理はこんな感じ
  • 1アイテムの高さを取得
  • ListViewクラスの高さを設定
  • スクロールの停止を検知し表示されているアイテムを選択する
  • 選択したアイテムにあわせてスクロール位置を微調整する


サンプルコード

  • 配列から Adapterを作成し、ListViewにセットする
       ListView hoursList = (ListView) findViewById(R.id.HoursListView);
       Integer[] hours = new Integer[24];
       for (int i = 0 ; i < 24 ; i++) hours[i] = Integer.valueOf(i);
       ArrayAdapter<Integer> hoursAdapter = 
               new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, hours);
       hoursList.setAdapter(hoursAdapter);
  • 画面サイズを取得し、そのサイズを使ってリストアイテムの高さを測定
       WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
       Display display = wm.getDefaultDisplay();
       DisplayMetrics metrics = new DisplayMetrics();
       display.getMetrics(metrics);
       View tempView = hoursAdapter.getView(0,  null,  null);
       tempView.measure(metrics.widthPixels, metrics.heightPixels);
       int itemHeight = tempView.getMeasuredHeight();
  • ListViewの高さをアイテムの高さに合わせる
       LayoutParams tempLayout = hoursList.getLayoutParams();
       tempLayout.height = itemHeight;
       hoursList.setLayoutParams(tempLayout);
  • ListViewのデフォルト位置を設定し、リスナーをセットする
       hoursList.setSelection(5);
       hoursList.setOnScrollListener(this);

  • リスナーを作成。アクティビティを使っている
public class MainActivity extends Activity
implements OnScrollListener {

  • リスナーのメソッドを実装する
public void onScroll(AbsListView view, int firstVisibleItem,
		int visibleItemCount, int totalItemCount) {
	//nothing todo 
}
  • スクロール位置を微調整するよう小細工する
public void onScrollStateChanged(AbsListView view, int scrollState) {
	// TODO 自動生成されたメソッド・スタブ
	Log.v(TAG, "Scroll State:" + scrollState);
	if (scrollState == SCROLL_STATE_IDLE ) {
		ListView listView = (ListView)view;
		View firstShownChilndView = listView.getChildAt(0);
		int targetPos = listView.getFirstVisiblePosition();
		if( itemHeight + firstShownChilndView.getTop() < itemHeight / 2) 
			targetPos += 1;
		if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
			listView.smoothScrollToPosition(targetPos);
		} else {
			listView.setSelection(targetPos);
		}
	}			
}

この例でアプリをエミュレータ上で実行すると、ホイールマウスによるスクロールが onScrollでは検知されるものの、onScrollStateChagedでは検知されず微調整されない。実機では問題ないが、少し気になる。
「ListViewの応用」をウィキ内検索
LINE
シェア
Tweet
Androidアプリ開発ノート
記事メニュー

メニュー


各種手順
  • トップページ
  • 開発環境構築
    • PATH設定
    • ソースコード管理
  • 仮想端末でHello,world
  • 実機で動作確認
基礎知識
  • Androidアプリの基本構成
    • Androidプロジェクト
    • アクティビティのライフサイクル
  • ログ出力
  • 異なる環境への最適化

逆引き
  • リストから値を選択する
    • Spinnerの使用
    • ListViewの応用
  • タイマーを使う
  • 着信音を鳴らす
  • ステータスバーに通知を出す







更新履歴

取得中です。

ここを編集
記事メニュー2

wiki内検索

検索 :



管理人のオススメ


Javaの基本から学ぶならコレ。定番の一冊

独習Java 第4版



名著。オブジェクト指向を深く学ぶなら。

オブジェクト指向でなぜつくるのか 第2版 知っておきたいOOP、設計、関数型言語の基礎知識



作りながら体で覚えることが大事

作ればわかる!Androidプログラミング―10の実践サンプルで学ぶAndroidアプリ開発入門 (Smart Mobile Developer)



その他のアイテムを探す








ここを編集
最近更新されたページ
  • 4662日前

    トップページ
  • 4668日前

    ServiceのBind
  • 4669日前

    wiki初期画面のバックアップ
  • 4670日前

    ソースコード管理
  • 4670日前

    メニュー
  • 4671日前

    着信音を鳴らす
  • 4674日前

    ステータスバーに通知を出す
  • 4676日前

    タイマーを使う
  • 4677日前

    ListViewの応用
  • 4678日前

    TextViewの応用
もっと見る
最近更新されたページ
  • 4662日前

    トップページ
  • 4668日前

    ServiceのBind
  • 4669日前

    wiki初期画面のバックアップ
  • 4670日前

    ソースコード管理
  • 4670日前

    メニュー
  • 4671日前

    着信音を鳴らす
  • 4674日前

    ステータスバーに通知を出す
  • 4676日前

    タイマーを使う
  • 4677日前

    ListViewの応用
  • 4678日前

    TextViewの応用
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  2. MadTown GTA (Beta) まとめウィキ
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. ソードランページ @ 非公式wiki
  6. AviUtl2のWiki
  7. Dark War Survival攻略
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. ありふれた職業で世界最強 リベリオンソウル @ ウィキ
  10. 星飼いの詩@ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. 検索してはいけない言葉 @ ウィキ
  7. モンスター烈伝オレカバトル2@wiki
  8. 機動戦士ガンダム EXTREME VS.2 OVERBOOST wiki
  9. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  10. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. アフロディテ - オレカバトル アプリ版 @ ウィキ
  3. 機体一覧 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  4. Trickster - ストグラ まとめ @ウィキ
  5. ギャング - ストグラ まとめ @ウィキ
  6. 暦家 - ストグラ まとめ @ウィキ
  7. shade - 初音ミク Wiki
  8. グランツーリスモ7/収録車種 - グランツーリスモWiki
  9. ロスサントス救急救命隊 - ストグラ まとめ @ウィキ
  10. MOZU - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.