2012-01-05 20 views
1

私はXMLフィードからのデータをロードし、様々な活動とさまざまなタブを作成しています私のメインクラスでのArrayListを定義している:私はハッシュマップのArrayListのへのマップエントリを置く場所の別のクラスのArrayList/Hashmapにアクセスする(反復する)方法は?

static ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

例:

for (int i = 0; i < 10; i++) {  
    HashMap<String, String> map = new HashMap<String, String>(); 
    Element e = (Element)nodes.item(i); 
    map.put("id", XMLfunctions.getValue(e, "id")); 
    map.put("lat", "Lat: " + XMLfunctions.getValue(e, "lat")); 
    map.put("long", "Long: " + XMLfunctions.getValue(e, "long")); 
    mylist.add(map); 
} 

最初のタブはListViewActivityであると私は正常にメインクラスでのArrayListを参照してリストを作成することができる午前:リストアダプタを介してclass.mylist

ListAdapter adapter = new SimpleAdapter(
         ListViewActivity.this, 
         main.mylist, R.layout.list, 
         new String[] { "id", "lat", "long" }, 
         new int[] { R.id.item_id, R.id.item_lat, R.id.item_long });     
setListAdapter(adapter); 

私の2番目のタブがMapViewのであり、私が正常にタブを切り替えることが可能です、タブレイアウト内の地図を表示し、&ズームなどをパン、私は助けを必要と

は「LATにアクセスする方法を理解していますメインクラスの "mylist" ArrayList/Hashmap内の "長い"文字列(注:メインクラスでArrayList/Hashmapを宣言し、大きなXMLフィードであるため、データを再読み込みしたり、メモリ内にオブジェクトが多すぎることを望まないようにしました。)。

私の目的は、これらの緯度/経度座標をGeoPointに変換してマップオーバーレイを使用して表示することです。私はすでにマップアクティビティクラスにハードコードされた固定GeoPointsを使用してこれを行うことができます。しかし、私が上に書いたように、これらの「固定」ジオポイントを置き換え、代わりに「mylist」ArrayList/Hashmapの内容を使用する必要があります。

私はプログラミングJava/Androidに新しく(< 1ヶ月の経験があります)、これはすべて意味があると思いますか?誰かが説明したり、データにアクセスする方法の例を挙げたりすることができるように願っています...私は 'Iterations'のようなさまざまな手段を実装しようとしましたが、まだ動作していません。

答えて

0

あなたはいくつかのことができます。フィードを静的変数にすることができます。静的だった場合は、MyActivity.myListと書いて、どこからでもアクセスできます。

また、あなたが意図を経由してXML文字列を渡すことができます。

Intent i = new Intent(this, ActivityToLaunch.class); 
i.putExtra("xml", xml); 
startActivity(i); 

し、次いでそれを取得:

String xml = getIntent().getExtras().getString("xml"); 

もう一つのアイデアファイルが本当に大きい場合、保存することですxmlファイルをsdカードにコピーし、各アクティビティでロードします。これらの上で行われた

、あなたはこの

for(HashMap<String,String> map: myList) 

のようにArrayListのを反復して、いくつかの方法で、それぞれのHashMapを反復処理することができます

あなたが取得できるようになる
for(String s: map.keyset()) 

キーの値を入力するか、次のような値を繰り返し処理することができます。

for(String s: map.values()) 
+0

こんにちはJoru、はい私はすでに、静的変数として「マイリスト」のArrayListを宣言していた - という意向を経由して、それを渡すよりも。上の提案で、私は今、ArrayListを繰り返し処理し、Logcatのhashmapオブジェクトのすべてのデータを表示することができました。しかし、値を取得した後も、id、lat、longなどの特定のエントリにアクセスする方法はまだ分かりません。 (申し訳ありませんが、私の質問は非常に基本的ですが、私は非常に初心者です説明した場合) – Kevin

+0

あなたのコードをもう一度見て、あなたは何らかの種類の小さなクラスを定義し、hashmapを使用する代わりにそのリストを使用することができます。 id、lat、およびlongメンバーを持つクラス。 http://kkrit.com/n/Java_1.6_Tutorial/java/javaOO/classes.htmlこれは、クラスを宣言する方法の例です。 latにアクセスするには、たとえば今のようにmap.get( "lat");を実行する必要があります。 – Joru

2

あなたの質問が正しく理解された場合、への道を探していたのですが、ArrayListにはを繰り返していますか?もしそうなら、この例では、あなたが始める必要があります:あなたが示唆したよう

Iterator itr = myList.iterator(); 
while (itr.hasNext()) { 
    HashMap<String, String> map = (HashMap<String, String>) itr.next(); 
    String lat = (String) map.get("lat"); 
    String lon = (String) map.get("long"); 
    String id = (String) map.get("id"); 
    Log.d(TAG, "Lat is: " +lat); 
    Log.d(TAG, "Lon is: " +lon); 
    Log.d(TAG, "ID is: " +id); 
} 
+0

こんにちはマーヴィン - それは完璧に働いた、すばやい応答のためにあまりにもありがとう! – Kevin

+0

それは完璧に動作しますが、私のコードmap.get(lat); 、map.get(long); map.get(id)その後、その仕事の男。、私は投票したu thax –

関連する問題