2013-08-29 41 views
1

在我的(第一个)android应用程序上,我有一个日记屏幕,显示用户具有的约会列表。目前,该应用程序显示列表中显示核心信息的约会(开始时间,结束时间等)。使用光标填充项目到列表视图后

为了让用户看到,当他们有约会间的空闲时间,他们需要煞费苦心地看所有的时间和锻炼身体的时候还有一定的差距。我想以视觉方式创造这种差距,让用户更直观。

目前我正在使用SimpleCursorAdapter来填充SQLite表中的列表视图,但就我所知,我无法编辑游标的结果(因为 - 这是我的理解 - 游标只是指向数据库的指针,而不是信息的副本)。

理想是什么,我想这样做是检测每当有约会之间的间隙并插入一个额外的行那里有一个缺口(无论缺口大小的 - 一个单行)。我希望通过这个'差距'来说明差距包含多少分钟的空闲时间。

实现此目标的最佳方法是什么?

我已经加入我的理想如下布局:

enter image description here

+0

你可以看到类似的问题[这](HTTP答案:/ /stackoverflow.com/questions/11197274/how-to-add-multiple-header-views-in-a-listview) – Peregreen

+0

我真的不明白这个答案是否合适 - 你能解释一下吗? –

回答

1

你可以预约类:

class Appointment implements Comparable<Appointment> { 

    // your appointment class 

    private String title; 
    private Date time; 
    private boolean isFreeTime; 
    etc. 

    Constructor 
    Setters/Getters 

    @Override 
    public int compareTo(Appointment appointment) { 
     return 0; //Here you sort by date or whatever you want 
    } 
} 

设置适配器之前先通过光标。

ArrayList<Appointment> appointments = new ArrayList<Appointment>(); 

if (cursor == null) 
    return; 

cursor.moveToFirst(); 

while (!cursor.isAfterLast()) { 

    Appointment appointment = new Appointment(/*your stuff*/); 
    appointments.add(appointment); 

    cursor.moveToNext(); 

} 

cursor.close(); 

然后通过列表并添加所有空闲时间行。

appointments.setFreeTime(true); 

使用

Collections.sort(appointments); 

扩展BaseAdapter和ArrayList中传递给适配器

这应该工作:)

+0

非常感谢你的回复。实际上我已经创建了一个Appointment类,所以没关系。所以基本上你说的是光标应该填充约会对象的ArrayList,然后我在适当的位置插入各种'空闲时间'约会,然后使用数组列表来填充列表视图?非常感谢你向我解释 - 如果我错了什么,请让我知道!我现在会尝试这个:) –

+0

这正是我所说的。希望它对你有用。 :) – sweggersen