Android 如何使用cursoradapter在listview中显示空行?
我有一个Sqlite数据库表,它有以下列:_id、key(int)、name(text)。这里的密钥是唯一的密钥。假设表中有以下行: _id |键|名称 1 | 2 | n2 2 | 3 | n3 3 | 5 | n5 4 | 6 | n6 现在,我必须显示这个表的列表视图,其中从key=1开始,如果key存在,我将显示key后跟name,如果key不在表中,我将显示key后跟'notassigned'。如何使用游标适配器执行此操作? e、 g.对于上表,我将显示如下列表视图:Android 如何使用cursoradapter在listview中显示空行?,android,sqlite,android-cursoradapter,Android,Sqlite,Android Cursoradapter,我有一个Sqlite数据库表,它有以下列:_id、key(int)、name(text)。这里的密钥是唯一的密钥。假设表中有以下行: _id |键|名称 1 | 2 | n2 2 | 3 | n3 3 | 5 | n5 4 | 6 | n6 现在,我必须显示这个表的列表视图,其中从key=1开始,如果key存在,我将显示key后跟name,如果key不在表中,我将显示key后跟'notassigned'。如何使用游标适配器执行此操作? e、 g.对于上表,我将显示如下列表视图: 未分配 氮气 n
我认为这是两个最简单的方法:
- 为所有可能的键创建空行
当您在数据库中插入新行时,假设key=9,检查数据库中当前最高的键是什么(这里是6),并在该行和新行之间创建空行(名称设置为
或空字符串)。NULL
然后在光标或适配器中,如果名称为空,则可以轻松显示“未分配”
- 子类
另一种方法是子类化和重写CursorWrapper
,move()
,moveToNext()
。。。模拟空行。这更灵活,需要更少的空间和数据库操作,但有些方法可能很难实现(您将如何编写getCount()
?它应该返回最高的键,但如何高效地找到它?)getCount()
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();
listary=newarraylist();
整数计数=1;
while(cursor.moveToNext())
{
从光标行获取键和名称
while(count
然后使用listArray作为ArrayAdapter的数据集。问题在于,您的数据库指出哪些元素应显示在列表中,而您希望显示数据库中不存在的列表项。我想说,在数据库和视图组件之间需要一个类似助手的工具来加载数据库的东西,将缺失的行添加到一组完整的数据中,并将这组数据(SQLite数据+缺失行)提供给适配器类。然后,适配器知道列表中的行数,并可以创建此数量的视图。现在您有了相同数量的数据对象和视图 也许这能帮你。这是谷歌将光标转换为对象的一个例子。然后您可以使用ArrayAdapter