0

サイズが動的な配列のリストを作成し、要素を追加し、終了したらそれらを反復処理しようとしています。現在、私のコードは次のとおりです。

    String activities = "SELECT DISTINCT phoneactivity from ContextTable030313";
    ArrayList<String> myActivities = new ArrayList();

    Cursor cursor2 = db.rawQuery(activities, null);
    // looping through all rows and adding to list
    if (cursor2.moveToFirst()) {
        do {
            myActivities.add(cursor.getString(cursor2.getColumnIndex("ts")));

        } while (cursor2.moveToNext());
    }

それでも、do ループでの実行に失敗します。何かを間違って宣言していると思いますが、次の警告が表示されます。

- ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
    - Avoid object allocations during draw/layout operations (preallocate and reuse instead)
    - Type safety: The expression of type ArrayList needs unchecked conversion to conform to 
     ArrayList<String>

それでも、なぜこれが機能しないのかわかりません。

4

2 に答える 2

1

問題は次のようです。

型の安全性: ArrayList 型の式は、ArrayList に準拠するために未チェックの変換が必要です

これは、次のコード行を示しています。

ArrayList<String> myActivities = new ArrayList();

その行を次のように変更する必要があります。

ArrayList<String> myActivities = new ArrayList<String>();

別の注意として、このコード セグメントを置き換えることができます。

  if (cursor2.moveToFirst()) {
        do {
            myActivities.add(cursor.getString(cursor2.getColumnIndex("ts")));

        } while (cursor2.moveToNext());
    }

これとともに:

  while (cursor2.moveToFirst()) {       
        myActivities.add(cursor.getString(cursor2.getColumnIndex("ts")));       
    }
于 2013-03-05T06:39:05.287 に答える
0

コンストラクターの呼び出し中にパラメーター化された型を受け入れるように、arrayList 宣言を変更します。

ArrayList<String> myActivities = new ArrayList<String>();

Java 7 以降を使用する場合:

ArrayList<String> myActivities = new ArrayList<>();

*型推論*により、コンストラクターの呼び出し中にパラメーター化された型を宣言する必要はありませんが、空の <> を宣言する必要があります。

于 2013-03-05T06:38:27.427 に答える