ListViewのポイント
記念日表示アプリで使用しているListViewのポイントです。
Adapter
Adapterを使うと、オリジナルの行を表示できるListViewを作成できます。他の方のブログの解説が非常に丁寧で、とても参考になりました。
- ListViewをカスタマイズする | Android Techfirm Lab
- ListViewとListActivity(3)-応用編 – 愚鈍人
- Y.A.M の 雑記帳: Android 「The world of ListView」 – Headers and footers –
選択できないリスト
普通のListViewはタップすると選択出来ますが、全く選択できないListViewにする事もできます。ArrayAdapterを継承したMyArrayAdapterクラスに、以下の2つのメソッドを@Overrideさせます。
[java]
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
[/java]
表示位置
ListView#setSelectionFromTop(int position, int y)を使用します。positionで先頭に表示したい行のインデックスを指定します。第2引数のyを指定すると、yの分だけ下にずれて表示されます。
[java]
ListView listView = (ListView)findViewById(R.id.list);
listView.setSelectionFromTop(3, 20);
[/java]
Fast Scroll
Fast Scrollは、リストビューを上下にスライドさせたときに、右端に出てくる”つまみ”でできる高速スクロールの事です。つまみをタップしながら上下にずらすと、高速でスライドさせることができます。
layout.xmlのListViewの属性に、”android:fastScrollEnabled“を追加します。
[xml]
<ListView android:id="@+id/list2"
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:fastScrollEnabled=“true” />
[/xml]
高速化
まだ、やってません。ヒントはこのあたり。
ListView表示を早く見せる俺様的コツ(例外あり) 1.convertViewの再利用 2.ViewHolderバターンの適用 3.全データを表示しない 4.表示件数が多い場合は途中でnotifyDataSetChanged 5.データは一括取得しない #androiDev
<p class="twitter-detail-info">
<a href="http://twitter.com/dumapick/status/27036992502" class="twitter-detail-info-permalink"><span class="twitter-detail-info-date">2010-10-11</span> <span class="twitter-detail-info-time">23:12:26</span></a> <span class="twitter-detail-info-source">via <a href="http://seesmic.com/seesmic_mobile/android/" rel="nofollow">Seesmic for Android</a></span>
</p>
ListViewのAdapterにセットするデータはAsyncTaskかHandlerを使ったUIスレッドで取得すると吉。また一括取得するAPI(PackageManager系のAPIとか)をベースに何かしたいときは、取得後1回のループで済むように設計する #androiDev
<p class="twitter-detail-info">
<a href="http://twitter.com/dumapick/status/27037819155" class="twitter-detail-info-permalink"><span class="twitter-detail-info-date">2010-10-11</span> <span class="twitter-detail-info-time">23:21:26</span></a> <span class="twitter-detail-info-source">via <a href="http://seesmic.com/seesmic_mobile/android/" rel="nofollow">Seesmic for Android</a></span>
</p>