2

我有一个列表视图,显示从我的网站获得的值(名称),然后使用 onItemClickListener 在 Web 视图中加载与该名称对应的 url 链接,效果很好!但是当我添加一个 if 语句时它不会读取它,有人可以告诉我我做错了什么吗?

这是代码

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();
        }

    }
};

(cambio = noteId.Medio.toString();) 只能是 Periodico、Radio、Tv(因为我已经将它的值设置为这 3 个单词中的任何一个)所以我想要的只是一个 tost 来显示这是什么!

4

4 回答 4

3

不应该

if(cambio == "Periodico")

if(cambio.equals("Periodico"))
于 2012-04-27T22:48:43.950 回答
2

不确定,但如果 cambio 是一个 String 对象,if 语句应该是

if(cambio.equals("Periodico") {
...
于 2012-04-27T22:48:50.910 回答
1

== 运算符检查两个对象是否引用内存中的同一空间(不是字符串的内容)。字符串是对象,这意味着 == 运算符不进行内容检查,而是进行引用检查。使用实例compareTo(String anotherString)equals(Object)方法比较字符串的内容,即:

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

如果大小写无关紧要,还有一个compareToIgnoreCase(String string)equalsIgnoreCase(Object)变体。

于 2012-04-27T22:56:03.823 回答
0

您是否尝试使用 switch 语句而不是 if?另外,如果您使用将 cambio 输出到 logCat,您会得到什么

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

最后一件事。您使用什么将列表连接到您的活动?一个简单的适配器,baseAdapter,..?

于 2012-04-27T22:54:57.753 回答