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