2012-04-27 162 views
2

我有一個列表視圖,顯示從我的網站獲得的值(名稱),然後使用onItemClickListener加載與該名稱相對應的URL鏈接,該工作正常!但是當我添加一條if語句時,它不會讀取它,有人可以告訴我我做錯了什麼嗎?Android if if語句不工作inItemClickListener

下面是代碼

private AdapterView.OnItemClickListener onPeriodicosListClick = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     cambio=""; 
     pUrl=""; 
     noteId = arrayOfWebData.get(position); 
     cambio = noteId.Medio.toString(); 
     PeriodicosListLayout.setVisibility(View.GONE); 
     webLayout.setVisibility(View.VISIBLE);  
     pUrl = noteId.website.toString(); 
     wvp.loadUrl(pUrl); 

     if (cambio == "Periodico"){ 
      Toast.makeText(getApplicationContext(), 
        cambio, 
        Toast.LENGTH_LONG).show(); 
     } 
     if (cambio == "Tv"){ 
      Toast.makeText(getApplicationContext(), 
        cambio, 
        Toast.LENGTH_LONG).show(); 
     } 

    } 
}; 

的(坎比奧= noteId.Medio.toString();)只能Periodico,收音機,電視(如我的它的值設置爲是任何的只有3個字)所以我想要的只是一個顯示,告訴它是什麼!

回答

3

它不應該是

if(cambio == "Periodico") 

if(cambio.equals("Periodico")) 
+0

謝謝你的作品! – zvzej 2012-04-27 22:54:35

2

不知道,但如果坎比奧是一個String對象,if語句應該是

if(cambio.equals("Periodico") { 
... 
+0

這樣一個簡單的解決方案!謝謝它的作品! – zvzej 2012-04-27 22:54:19

0

你嘗試使用一個switch語句而不是if?也不要使用,如果

Log.d(TAG, "cambio: " + cambio); 

最後一件事,你輸出坎比奧到logcat的你會得到什麼。你用什麼來連接列表到你的活動?一個simpleAdapter,baseAdapter,..?

+0

不,我沒有使用switch語句,因爲我不知道如何在這種情況下實現它。我正在使用ArrayAdapter – zvzej 2012-04-27 23:01:34

1

==運算符檢查兩個對象是否引用內存中的同一空間(而不是字符串的內容)。字符串是對象,意味着==運算符不會執行內容檢查,而是執行引用檢查。使用實例compareTo(String anotherString)equals(Object)方法比較字符串的內容,即:

if (cambio.compareTo("Periodico") == 0) { /* match */ } 
if (cambio.compareTo("Tv") == 0){ /* match */ } 

還有一個compareToIgnoreCase(String string)equalsIgnoreCase(Object)變型,如果不區分大小寫。