2011-12-02 7 views
0

のための多次元配列を作成するには、私が今持っているものです。アンドロイド:ここでリストビューアダプタ

private Object mainArray[] = {R.drawable.main_logo, "page_4"}; 
    private Object studioArray[] = {R.drawable.studio_logo, "page_5"}; 
    private Object gArray[] = {R.drawable.g_logo, "page_6"}; 
    private Object venues[] = {mainArray,studioArray,gArray}; 

私はしかし、私はオブジェクトのサイズを取得することはできません、私のアダプタに会場配列オブジェクトを渡します。会場。サイズ();これを行うより良い方法はありますか?

答えて

0

、あなたの代わりにvenues.size()の

venues.length 

を呼び出す必要があります

しかし:

@arasmussenが彼の最後の行に言ったように、あなたをArrayListのようなより複雑な データ構造を使用することもできます。

私はあなたのコードのコンテキストを知らないが、通常の配列はこの状況では少しアンクルであるようだ。オブジェクトの配列を作成するので、配列に何が含まれているかはわかりません(オブジェクト以外)。私はオブジェクトの配列を作成する唯一の理由は、intと文字列を一緒に格納したいということです。

マップは、実際にどのような種類のオブジェクトを格納したいかを定義し、他のオブジェクトを配置することができないようにするため、この種のオブジェクトに適しています。あなたの配列で検索し、抽出したり、値をする必要がある場合も、地図

が、私はこのような何かを示唆している...、後でより多くの機能を提供します:

Map<Integer, String> main = new HashMap<Integer, String>(); 
main.put(R.drawable.main_logo, "page_4"); 

Map<Integer, String> studio = new HashMap<Integer, String>(); 
main.put(R.drawable.studio_logo, "page_5"); 

Map<Integer, String> gArray = new HashMap<Integer, String>(); 
main.put(R.drawable.g_logo, "page_6"); 

ArrayList<Map<Integer, String>> venues = new ArrayList<Map<Integer, String>>(); 
venues.add(main); 
venues.add(studio); 
venues.add(gArray); 

Allthoughを、これは以下のように思えるかもしれません過剰な後でもっと柔軟になります。例えば。

venues.size(); // Get the number of venues 

for(Map<Integer, String> element : venues) 
{ 
    if(element.containsKey(R.drawable.main_logo)){} // do something 
    else if(element.containsValue("page 5")){} // do something else 
} 

多分私は少しはしかし夢中:あなたはこのようなことを行うことができます。しかし、後でそれらの配列に正確に何があるのか​​分からないので、私はオブジェクトの配列を作成するのが嫌いです。

0

会場はオブジェクトの配列ですが、オブジェクトは含まれていません。オブジェクトの配列を含んでいます。だから、オブジェクトの配列を持つよりも、場所をオブジェクトの配列の配列にする必要があります。

これはおそらく何か?

private Object[] venues[] = {mainArray,studioArray,gArray}; 

私がC++プログラマであるため、この回答には自信がありませんが、これが私が最初に試すものです。私はあなただけの配列より多くの機能を提供するかもしれないArrayListのようなより複雑なデータ構造を使うことができると信じています。あなたは、配列を使用しているので

関連する問題