2013-08-29 42 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