2013-03-05 123 views
0

我试图创建数组的列表,动态大小,添加元素并在完成时遍历它们。目前我的代码是:创建并遍历Java中的字符串列表

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> 

但我不明白为什么这是行不通的。

+1

前的Java 7,应该来在两侧。即新ArrayList ()以及 – rajesh 2013-03-05 06:38:15

+0

我做到了这一点,我仍然得到以下警告:“在绘制/布局操作期间避免对象分配(预分配和重用,而不是)”和我的代码仍然在做循环失败.... – WildBill 2013-03-05 06:41:23

+0

检查这个http://stackoverflow.com/questions/11490611/android-roundrectshape-modify-corner-radii – rajesh 2013-03-05 06:42:46

回答

0

更改您的arrayList声明,使其在构造函​​数调用期间接受参数化类型

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

如果您使用的Java 7或以上:

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

你不需要构造invokation在parametreized类型声明,由于* 类型推断 *,但你仍然需要声明空<>。

+0

我这样做,我仍然得到以下警告:“在绘制/布局操作期间避免对象分配(预先分配和重用 )”并且我的代码仍然在do循环中失败.... – WildBill 2013-03-05 06:39:37

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