26

どちらを勉強しようか今とても迷っています。私は iPhone アプリ開発者で、現在 Android 開発を学んでいます。

ListViewを使用して、文字列の静的配列でを使用する方法を学びましたAdapter。私は、主に画像やテキストなどの動的コンテンツをTableViews で表示するために、iPhone でカスタムセルを使用することに慣れています。

では、Android でそれを行うにはどのような方法がありますか? TableLayoutまたはListView

4

3 に答える 3

80

他の人がコメントで既に述べているように、どのタイプのレイアウトを使用するかを具体的に決定する前に、最初に何をしたいのかを明確に定義する必要があります. ただし、同じ目的を達成するために複数のレイアウト クラスから選択することがよくあるため、どのタイプのレイアウト クラスを使用するかを決定しようとすることから生じる混乱は確かに理解できます。たとえば、項目の垂直スクロール リストを作成するには、最初に垂直方向の を選択しLinearLayout、それを 内に配置しScrollViewます。しかし一方で、同様の最終結果を得るには、 をListView適切な と一緒に使用できますAdapter

同様に、垂直方向にスクロールできる項目のグリッドを表示するには、 aTableLayout内で a を使用できますScrollViewGridViewまたは、適切な を介してデータを提供することにより、を使用して同様の結果を得ることができますAdapter

さて、最初の重要な違いは次のとおりです。クラスは、子要素を XML レイアウトで、またはコードでプログラム的に提供する必要がありますLinearLayout。と(およびその他のいくつか) のTableLayoutようなクラスは、 のサブクラスであるため、大きく異なります。クラスの特別な点は、クラスにデータをバインドするためにanが使用されることです。したがって、アイテムの垂直リストの例に戻ると、配列データに基づいて内に子リスト アイテムのグループを表示する場合、プログラムで子を作成し、配列データに基づいてそれに追加する必要があります。一方、子アイテムを表す個々のは、適切なListViewGridViewandroid.widget.AdapterViewAdapterViewAdapterLinearLayoutViewLinearLayoutListViewViewAdapter. したがって、すべての子アイテムでレイアウトをプログラムで埋めるのではなく (たとえば、LinearLayoutまたはTableLayoutの場合のように)、Adapterベースのレイアウトは代わりに を呼び出して、必要なときにAdapter子を取得しViewます。

最後の点は、ベース レイアウトについて理解しておくべき次の重要な違いですAdapter。データの大部分がスクロールされて表示されない状況で、大量のデータを表示する場合にはるかに効率的です。たとえば、を使用してアイテムの大きなスクロール リストを表示する場合は、単ににすべてのアイテムをListView入力して 内に配置する場合よりもはるかに効率的です。この効率の理由は、通常、ベースのレイアウトには一度にすべての子が含まれないためです。代わりに、ユーザーがリストをスクロールすると、既存の子ビューが「リサイクル」または「変換」されます。LinearLayoutScrollViewAdapterViewViewAdapter次の子要素を表示します。これを例で説明すると、100 項目の垂直方向にスクロールするリストが必要です。ただし、画面は一度に 7 を表示するのに十分な大きさしかない場合があります。LinearLayouta の中で aを使用してScrollView100 個のリスト アイテムを表示するとします。つまり、LinearLayoutコンテナーには 100 個の child がありViewsます。これらの子は常にレイアウトに存在し、一度に画面に表示できるのは 7 つだけであっても、スクロール イベント中にシステムによって処理される必要があります。これには余分な CPU 時間と大量の RAM が必要となり、スクロールが遅くなる可能性があります。を使用するListViewと、レイアウトにはおそらく 7 つまたは 8 つの子のみが含まれますView。ユーザーがスクロールすると、これらの子Viewは動的に変換または再インスタンス化されます。Adapterデータをバインドします。ユーザーは、より高速でスムーズなスクロール操作を体験できます。プログラミングの観点からは、通常、Adapter. スクロール リストまたは のグリッドを扱う場合Bitmap、デバイスのメモリ制約は、の使用が非常に重要Androidであることも意味します。AdapterView

これに答えるとき、おそらく s を含む、スクロール可能なアイテムの垂直または表形式のリストを表示しようとしていると仮定してBitmap、レイアウトのタイプに集中していることに注意してください。そのデータのレイアウトとスクロールを実現するために使用します。LinearLayoutただし、 、 などのレイアウト クラスはTableLayout、アプリケーションの個々のレイアウト ビルディング ブロックを形成するために常に使用する重要なクラスです。リスト全体が画面に収まることが保証されており、スクロールできない場合は、を使用することによる追加の複雑さ(実際にAdapterそれほど複雑ではない) は無意味であり、単に a などを使用したい場合があります。TableLayout

于 2012-08-28T07:46:28.737 に答える
7

iOS に相当する AndroidUITableViewRecyclerView.

これは非常に強力で、接続するアダプターのタイプに応じて、さまざまなソースからデータを入力できます。このRecyclerView コードラボをご覧になることをお勧めします。

于 2012-08-28T07:18:40.033 に答える
2

1.リスト形式で使用する場合は、 ordynamic dataを使用するのが良い方法です.....CUSTOM VIEWListViewBaseAdapterArrayAdapter

2. まったく異なる用途TableLayoutになります。主に、スタック形式で表示する必要があるデータを表示するために使用します..(つまり、他のものの上に..)

迅速な理解と実装については、以下のリンクを参照してください。

http://www.ezzylearning.com/tutorial.aspx?tid=1763429

http://www.vogella.com/articles/AndroidListView/article.html

于 2012-08-28T07:20:40.277 に答える