所选联系人android的双值

时间:2014-08-22 05:38:16

标签: android android-sqlite

我有一个带有复选框的联系人列表。当用户选中复选框时,我已经更新了我的表字段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;
    }

1 个答案:

答案 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;
}