gpt4 book ai didi

android - 如何在 ListView 中的某些项目之后显示分隔符?

转载 作者:行者123 更新时间:2023-11-29 22:33:06 25 4
gpt4 key购买 nike

我正在构建一个按字母顺序排序的列表。该列表应显示一个分隔符,其中包含以下图标所属的字母。

我正在使用一个 Cursoradapter,它包含来自数据库的已排序结果。我计划将分隔线添加到列表项,并在显示的字母发生变化时将其设置为可见。我怎么知道我有一封新信件?有没有更好的方法然后在光标中前进或后退并检查我显示的项目是新组的结束还是开始?

最佳答案

您可以在为 Cursor 提供数据的 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;

给出 (name, isFirst) 结果集 - 每个以“new”字母开头的项目都将 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

关于android - 如何在 ListView 中的某些项目之后显示分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com