1
我正在構建按字母順序排序的列表。該列表應顯示包含以下圖標所屬的Letter的分隔符。如何在列表視圖中的某些項目後顯示分隔符?
我正在使用一個Cursoradapter,它包含已經從數據庫中排序的結果。 我打算將分隔線添加到列表項目,並將其設置爲可見,如果顯示的字母更改。我怎麼知道我有一封新信?有沒有更好的方法,然後在光標前進或後退,並檢查我顯示的項目是新組的開始還是結束?
我正在構建按字母順序排序的列表。該列表應顯示包含以下圖標所屬的Letter的分隔符。如何在列表視圖中的某些項目後顯示分隔符?
我正在使用一個Cursoradapter,它包含已經從數據庫中排序的結果。 我打算將分隔線添加到列表項目,並將其設置爲可見,如果顯示的字母更改。我怎麼知道我有一封新信?有沒有更好的方法,然後在光標前進或後退,並檢查我顯示的項目是新組的開始還是結束?
您可以在爲查詢提供數據的SQL查詢中執行此操作。
假設我們有person(name varchar)
表。
不要問只是:
SELECT name FROM person ORDER BY name;
一個可以查詢:
SELECT p.name, CASE(
SELECT COUNT(*)
FROM person
WHERE name<p.name and SUBSTR(name, 1, 1)=SUBSTR(p.name,1 , 1)
) WHEN 0 THEN 1 ELSE 0 END isFirst
FROM person p
ORDER BY name;
,給(名字,isFirst)ResultSet - 每一項目開始與 「新」 的信件將有isFirst設置爲1表明新組的開始。
編輯:例子:
CREATE TABLE person(name varchar);
INSERT INTO person SELECT 'Jim' UNION SELECT 'Tom' UNION SELECT 'Ben' UNION SELECT 'John' UNION SELECT 'Alice' UNION SELECT 'Chris' UNION SELECT 'Anna' UNION SELECT 'Jerry';
SELECT p.name, CASE(
SELECT COUNT(*)
FROM person
WHERE name<p.name and SUBSTR(name, 1, 1)=SUBSTR(p.name,1 , 1)
) WHEN 0 THEN 1 ELSE 0 END isFirst
FROM person p
ORDER BY name;
給出:
Alice|1
Anna|0
Ben|1
Chris|1
Jerry|1
Jim|0
John|0
Tom|1
偉大的想法,但樣品不工作。 substring(name)和substring(p.name)總是相同 – Janusz 2010-06-24 09:51:38
你確定它不工作?看看這個例子和結果... – Gawcio 2010-06-24 10:11:08
感謝它現在正在工作的例子,我在最後忽略了人物。 – Janusz 2010-06-24 10:19:57