AndroidのListView:使いやすい

まともなマニュアルを探してインターネットをさまよいました。 私の意見では、価値があると思われましたが、Androidのプログラミングの世界ではいつものように、彼はもちろん英語です。 そこで私は、この環境でロシア語でマニュアルを配布することに貢献することにしました。 私はそれを研究し、途中でここで翻訳します。



記事は著者の許可を得たこの記事の翻訳です。



記事の続きはこちらです。 リストのカスタマイズとそれらを最適化するためのヒントについて説明します。



このマニュアルは、Android 4、Eclipse 3.7、Java 1.6用に作成されています。 ソースはここにあります



リストは、現代のモバイルデバイスでは一般的なものです。 リストをナビゲートして、何かを開くために必要な要素を選択できます。 Androidにはそれがあります。



リストアクティビティ



他のユーザーインターフェイスコンポーネントと同様に、プロジェクトでListViewを直接使用できます。 アクティビティの主な目的がリストを表示することである場合、ListActivityクラスでActivityクラスを拡張できます。これにより、ListViewの使用が大幅に簡素化されます。



ListActivityは、リストを使いやすくするためにアクティビティを拡張します。 たとえば、リストアイテムのクリックを処理する定義済みのメソッドが既にあります。



ListActivityには、コンテンツ管理を担当するListAdapterが含まれています。 アダプターは、setListAdapter()メソッドを使用して、アクティビティのonCreate()メソッドにインストールする必要があります。



リスト項目をクリックすると、onListItemClick()メソッドが呼び出されます。 このメソッドを使用すると、選択したアイテムにアクセスできます。



Androidには、「android.R.layout.simple_list_item1」など、アダプターで使用するための定義済みテンプレートが既にいくつかあります。 事前定義されたテンプレートを使用したくない場合、テンプレートには識別子「@android:id / list」が必要です。これはListViewと呼ばれます。 例:



<ListView android:id="@+android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
      
      







「@android:id / empty」というIDのビューを使用することもできます。 このビューは、リストが空のときに表示されます。



アダプター



アダプタとは何ですか?


ListViewは、コンテンツを取得してアダプターを通じて表示します。 アダプターはBaseAdapterクラスによって拡張され、リストのデータモデルと、要素内のこのデータの場所を担当します。



Androidには、ArrayAdapterとCursorAdapterの2つの標準アダプターがあります。 ArrayAdapterは配列またはリストに基づいてデータを管理し、SimpleCursorAdapterはデータベースのコンテンツを管理します。 これらの2つのクラスまたはBaseAdapterクラスを拡張する独自のアダプタを開発することもできます。



最も重要なアダプタメソッドはgetView()です。 リスト項目ごとに呼び出され、リスト項目にどのデータをどのように表示するかを決定します。 getVew()にはconvertViewパラメーターも含まれています。これにより、表示されなくなった既存のリストアイテムを再利用できます。 ユーザーはディスプレイの可視部分からそれを反転しました。 convertViewが空でない場合、テンプレートをロードしないように再度使用できます。これにより、パフォーマンスが大幅に向上します。 XMLファイルのアップロードは、かなりのリソースを消費します。



リストビューとパフォーマンス


モバイルデバイスで大量のデータを表示することは、可能な限り効率的に実装する必要があります。 そのため、ListViewは必要に応じてビュー(ウィジェット)を作成し、ビュー階層でそれらを強化します。 標準のListViewアダプタはビューを削除します。たとえば、アイテムが表示されなくなった場合、アイテムは消去され、その内容のみが変更されます。 アダプタを使用する場合は、パフォーマンスの問題を回避するためにこれも考慮する必要があります。



例:単純なListActivity



次に、可能な限り単純なリストを作成します。 標準のアダプタークラス-ArrayAdapterとAndroidによって事前定義されたビューを使用します。



「MyListActivity」アクティビティで新しいプロジェクト「de.vogella.android.listactivity」を作成します。 main.xmlテンプレートを変更しないでください。 次のアクティビティを作成します。



 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MyListActivity extends ListActivity { public void onCreate(Bundle icicle) { super.onCreate(icicle); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { String item = (String) getListAdapter().getItem(position); Toast.makeText(this, item + " ", Toast.LENGTH_LONG).show(); } }
      
      







setContentView()を使用しないことに注意してください。 別のテンプレートが明示的に指定されていない限り、ListActivityはデフォルトのListViewテンプレートを使用します。



リスト項目のいずれかをクリックすると、標準の「トースト」が表示され、どの項目が選択されたかに関する情報が表示されます。



再投稿をおaびします。 最初は翻訳としてマークされていません。 チップについてジェストンに感謝し、間違いから受け入れられ、学んだ。



All Articles