使用光标填充后,将项目添加到listview

时间:2013-08-29 14:43:20

标签: android listview

在我的(第一个)Android应用程序上,我有一个日记屏幕,显示用户拥有的约会列表。目前,该应用程序显示了一个约会列表,其中列出了核心信息(开始时间,结束时间等)。

为了让用户看到他们在约会之间有空闲时间,他们需要煞费苦心地一直看着,并在有差距的时候解决问题。我想在视觉上创建这个差距,使其对用户更直观。

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

理想情况下,我想做的是检测约会之间是否存在间隙,并在有间隙的情况下插入额外的行(无论间隙的大小 - 只是一行)。我希望这个“间隙”行说明差距包含多少分钟的空闲时间。

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

我在下面添加了理想的布局:

enter image description here

1 个答案:

答案 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传递给该适配器

这应该有效:)