2012-04-27 118 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)变型,如果不区分大小写。