使用 CursorAdapter 我认为您不容易做到。这种适配器的数据集是数据库中结果集上的光标。您的结果集中没有那些“未分配”的行,并且更改 SQL 以获取它们会很尴尬。如果你真的想这样做,你需要在 SELECT 列表中使用 IFNULL(name, 'Not assigned') 右连接到另一个序列号表(在 your_table.key = number_table.number 上)。您还需要为此使用原始查询。
我建议使用 ArrayAdapter,它是通过遍历结果光标并在进行时识别间隙来构建的。示例伪代码:
listArray = new ArrayList<String>();
int count = 1;
while (cursor.moveToNext())
{
get key and name from cursor row
while (count < key) //Add 'not assigned' for any gaps
{
listArray.add(String.valueOf(count) + ":" + "not assigned");
count++;
}
listArray.add(String.valueOf(count) + ":" + name);
count++;
}
cursor.close();
然后使用 listArray 作为 ArrayAdapter 的数据集。