0

ID のセットを ArrayList に保持しようとしています。現在の値を前述の Arraylist の内容と比較したいのですが、うまくいかないようです。

コード スニペットc.getString(0)では、SQLite データベースから数値 ID 列を取得しallProgramIdsており、同じ ID が含まれています。

方法 1. 単純な比較 (これは一致しません。無視するだけです)

                for(int i=0;i<allProgramIds.size();i++) {
                      Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds);

                        if( allProgramIds.get(i) ==  c.getString(0)) {
                            exist=true;
                            Log.w(TAG, "Found one:" + c.getString(0));
                            break;
                        }

                }

方法 2. 比較前に Int にキャストする (これによりクラッシュが発生します)

                for(int i=0;i<allProgramIds.size();i++) {
                      Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds);

                        if( Integer.toString((Integer) allProgramIds.get(i)) ==  c.getString(0)) {
                            exist=true;
                            Log.w(TAG, "Found one:" + c.getString(0));
                            break;
                        }

                }

ここにログ出力があります

 Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds);

04-04 10:43:42.805: W/MainProgram(2045): Looping - looking for:73, Holding:[68, 69, 70, 71, 72, 73, 74, 75, 76, 68, 69, 70, 71, 72]

ありがとう

4

1 に答える 1

4

ではなく、比較に使用equalsします。String==

if(allProgramIds.get(i).equals(c.getString(0)))
// ...

==on オブジェクトは、コンテンツの等価性ではなく、参照の等価性をチェックします (つまり、オブジェクトが格納されているメモリ位置へのポインターを比較します)。

于 2012-04-04T09:48:11.667 に答える