2

Webサイトから取得した値(名前)を表示するリストビューがあり、onItemClickListenerを使用してその名前に対応するURLリンクをWebビューにロードします。これは正常に機能します。しかし、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語のいずれかに設定したため)のみにすることができるので、必要なのは、表示するためのトーストだけです。それはなんですか!

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

== 演算子は、2 つのオブジェクトが (文字列の内容ではなく) メモリ内の同じスペースを参照しているかどうかを確認します。文字列はオブジェクトです。つまり、== 演算子はコンテンツ チェックではなく参照チェックを行います。インスタンスの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

if の代わりに switch ステートメントを使用してみましたか? また、cambio を logCat に出力するとどうなりますか?

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

最後に一つだけ。リストをアクティビティに接続するために何を使用していますか? simpleAdapter、baseAdapter、..?

于 2012-04-27T22:54:57.753 に答える