我有一个带有复选框的联系人列表。当用户选中复选框时,我已经更新了我的表字段selectedValue,其值为1.现在我想要的是我wamna以逗号分隔的方式获取所有联系人,其中selectedValue =因此,我写了一个查询。但我的结果不合适。
例如 我在列表中有4个联系人A,B,C,D。现在如果用户从列表中选择A和C,当我触发该查询以获得conacs逗号分隔时,这就是我得到的
A,A,C,C
我不知道为什么A和C的2个值正在进行
代码
public StringBuilder getCheckedContact() {
database = getWritableDatabase();
StringBuilder values = new StringBuilder();
String query = "Select * From " + contactTable + " where " + selectedContact + "=1";
Cursor c = database.rawQuery(query, null);
while (c.moveToNext()) {
for (int i = 0; i < c.getCount(); i++) {
values.append(c.getString(c.getColumnIndexOrThrow(contactName)));
if (i != c.getCount() - 1) {
values.append(",");
}
}
}
c.close();
database.close();
return values;
}
答案 0 :(得分:0)
您的while
循环遍历结果一次,然后for
循环第二次循环结果。如果您选择4个联系人,则会获得4 * 4 = 16个结果。
为什么要添加内部for
循环?
这可以改写如下:
public StringBuilder getCheckedContact() {
database = getWritableDatabase();
StringBuilder values = new StringBuilder();
String query = "Select * From " + contactTable + " where " + selectedContact + "=1";
Cursor c = database.rawQuery(query, null);
boolean firstItem = true;
while (c.moveToNext()) {
if(firstItem)
firstItem = false;
else
values.append(",");
values.append(c.getString(c.getColumnIndexOrThrow(contactName)));
}
c.close();
database.close();
return values;
}