2013-12-22 144 views
0

我花了一天的時間看看發生了什麼。在一個類中,我有簡單的listview多選。最後,每個選項都被放到String數組中並共享到下一個類。Android循環問題

SparseBooleanArray checked = listView.getCheckedItemPositions(); 
     ArrayList<String> selectedItems = new ArrayList<String>(); 
    for (int i = 0; i < checked.size(); i++) { 
     // Item position in adapter 
     int position = checked.keyAt(i); 
     // Add sport if it is checked i.e.) == TRUE! 
     if (checked.valueAt(i)) 
      selectedItems.add(adapter.getItem(position)); 
    } 

    String[] outputStrArr = new String[selectedItems.size()]; 

    for (int i = 0; i < selectedItems.size(); i++) { 
     outputStrArr[i] = selectedItems.get(i); 
    } 

    Intent intent = new Intent(getApplicationContext(), 
      ReadComments.class); 

    // Create a bundle object 
    Bundle b = new Bundle(); 
    b.putStringArray("selectedItems", outputStrArr); 

    // Add the bundle to the intent. 
    intent.putExtras(b); 

    // start the ResultActivity 
    startActivity(intent); 

在ReadComments類我做了簡單的方法:

public String[] tablica(){ 
     Bundle b = getIntent().getExtras(); 
     String[] resultArr = b.getStringArray("selectedItems"); 
     return resultArr; 

    } 

它帶回我的數據。當我把它的另一種方法在同一類:

String resultArr[] = tablica(); 

     int x = 0; 
     for (Map<String, String> mListaMar : mListaMarketow) { 
      lat = mListaMar.get(TAG_SZER); 
      longi = mListaMar.get(TAG_DLUG); 
      name = mListaMar.get(TAG_MARKET); 
      x=0; 


      for (x = 0; x < resultArr.length; x++) { 
       if (resultArr[x] == name) { 

        ustawMape(); 
        }}}  

UstawMape()方法負責谷歌地圖上顯示的標記。我的問題是一個邏輯問題,因爲一切工作正常,但ustawMape()方法應該顯示許多標記,現在它只顯示一個(ustawMape()的構造是可以的,因爲沒有for循環它工作正常)。線索是非常簡單的第一個循環,用於從JSON中獲取數據,第二個應該過濾並僅顯示用戶在listView中選擇的內容。 PLZ幫助我的人!

回答

1
if (resultArr[x] == name) 

使用equals()字符串比較,而不是==

if (name.equals(resultArr[x])) 

==比較對象引用,這將是不一樣的,除非字符串被拘留。 equals()比較字符串值。

+0

laalto恥辱的我,這是學校的錯誤:) thx求助 – bakusek