どちらを学ぶべきかについて、私は今とても混乱しています。私はiPhoneアプリの開発者で、現在Android開発について学習しています。
ListView
を使用して文字列の静的配列でAdapter
を使用する方法を学びました。私はiPhoneでカスタムセルを使用することに慣れており、主にTableView
sで画像やテキストなどの動的コンテンツを表示するために使用しています。
では、Androidでそれを行う方法はどれですか? TableLayout
またはListView
?
他の人がすでにコメントで述べているように、どのタイプのレイアウトを使用するかを具体的に決定する前に、まず何をしたいかを明確に定義する必要があります。ただし、同じ目的を達成するために選択するレイアウトクラスがいくつかあることが多いため、使用するレイアウトクラスのタイプを決定しようとすることから生じる混乱は確かに理解できます。たとえば、縦方向にスクロールするアイテムのリストを作成するには、最初に縦方向のLinearLayout
を選択し、それをScrollView
内に配置します。ただし、その一方で、同様の最終結果を得るには、ListView
を適切なAdapter
と一緒に使用できます。
同様に、垂直にスクロールできる項目のグリッドを表示するには、TableLayout
内でScrollView
を使用できます。または、GridView
を使用しても、適切なAdapter
を介してデータを提供することで、同様の結果を得ることができます。
最初の主な違いは次のとおりです。LinearLayout
やTableLayout
などのクラスでは、子要素をXMLレイアウトで、またはプログラムでコードで指定する必要があります。 ListView
やGridView
(およびその他いくつか)のようなクラスは、Android.widget.AdapterView
のサブクラスであるため、非常に異なります。 AdapterView
クラスの特別な点は、Adapter
を使用してデータをクラスにバインドすることです。したがって、アイテムの垂直リストの例に戻ると、配列データに基づいてLinearLayout
内に子リストアイテムのグループを表示している場合、プログラムで子View
sをそのLinearLayout
に入れます。一方、ListView
では、子アイテムを表す個々のView
sは適切なAdapter
から提供されます。したがって、プログラムでレイアウトにすべての子アイテムを配置する(たとえば、LinearLayout
またはTableLayout
の場合のように)代わりに、Adapter
ベースのレイアウトは代わりにAdapter
は、必要に応じて子View
sを取得します。
最後のポイントは、Adapter
ベースのレイアウトについて理解する必要がある次の重要な違いです。多くのデータがスクロールされて表示されない状況では、大量のデータを表示する方がはるかに効率的です。たとえば、ListView
を使用すると、LinearLayout
にすべての項目を入力してScrollView
。この効率の理由は、AdapterView
ベースのレイアウトには、通常、一度にすべての子View
sが含まれていないためです。代わりに、ユーザーがリストをスクロールすると、既存の子ビューがAdapter
によって「リサイクル」または「変換」され、次の子要素が表示されます。例でこれを説明するには、100項目の垂直スクロールリストが必要です。ただし、画面は、7を一度に表示するのに十分な大きさしかありません。 LinearLayout
内でScrollView
を使用して100個のリストアイテムを表示するとします。つまり、LinearLayout
コンテナには100個の子Views
があります。これらの子は常にレイアウトに存在し、一度に画面に表示できるのは7つだけであっても、スクロールイベント中にシステムで処理する必要があります。これには余分なCPU時間とかなりの量のRAMが必要であり、スクロールが遅くなる場合があります。現在、ListView
を使用すると、レイアウトにはおそらく7つまたは8つの子View
sのみが含まれます。ユーザーがスクロールすると、それらの子View
sは、データのバインドに使用するAdapter
によって動的に変換または再インスタンス化されます。ユーザーはより速く、よりスムーズなスクロール操作を体験できます。プログラミングの観点からは、Adapter
を介してデータのリストをバインドする方が通常ははるかに洗練されています。 Bitmap
sのスクロールリストまたはグリッドを処理している場合、Android
デバイスのメモリ制限は、AdapterView
の使用がかなり重要であることも意味します。
これに答えるとき、私はあなたがスクロール可能な項目の垂直または表形式のリストを表示しようとしていると仮定しました。おそらくBitmap
sを含み、私はタイプに集中しています。データのレイアウトとスクロールを実現するために使用するレイアウト。ただし、LinearLayout
、TableLayout
などのレイアウトクラスは、アプリケーションの個々のレイアウトビルディングブロックを形成するために常に使用する重要なクラスです。リスト全体が画面に収まることが保証されており、スクロールできない場合、Adapter
を使用することによる追加の複雑さ(それがis本当にそれほど複雑ではないこと)は無意味かもしれませんそして、あなたは単にTableLayout
か何かを使いたいかもしれません。
Android iOSと同等UITableView
はRecyclerView
です。
これは非常に強力で、アタッチする Adapter のタイプに応じて、さまざまなソースからのデータを入力できます。あなたはこれを見てみたいかもしれません RecyclerView codelab 。
1。必要な場合dynamic data
オン CUSTOM VIEW
リスト形式で、次にListView
とBaseAdapter
またはArrayAdapter
を使用する方法です。
2。TableLayout
は完全に異なる用途のものになります 、ほとんどの場合、スタック形式で表示する必要があるデータを表示するために使用します。
すばやく理解して実装するには、以下のリンクを参照してください:
http://www.ezzylearning.com/tutorial.aspx?tid=1763429
http://www.vogella.com/articles/AndroidListView/article.html