android - 没有光标的字母索引 ListView

标签 android json listview indexed alphabetical-sort

我使用 JSON 从服务器接收数据,我想使用字母索引部分按字母顺序对它们进行排序,并将它们存储在 ListView 中。 也许会发生在 :

for(int i=0;i<jArray.length();i++){
// here
}

我读到你可以只使用游标来排序这样的元素。在我的例子中,将来自服务器的元素存储在数据库中并再次读取它们是非常低效的。浪费时间和内存。

所以,我想问你是否可以解决我的问题:使用从 JSON 接收到的字母索引部分字符串按字母顺序排序。

编辑:我希望我的 ListView 看起来像这样http://eshyu.wordpress.com/2010/08/15/cursoradapter-with-alphabet-indexed-section-headers/ .我的意思是那些部分。我找到的所有教程都说您需要使用游标来获取信息。我的问题是我是否不能在没有游标的情况下执行此操作,因为将它们也存储在本地数据库中会浪费内存。

最佳答案

您可能需要解析 JSON 数组:

List<Project> list = new ArrayList<Project>();

for (int i = 0; i < jArray.length(); i++) {
    JSONObject obj = (JSONObject) jArray.get(i);
    project = new Project();
    project.setId( Long.parseLong(obj.get("id").toString()));
    project.setKey(obj.get("key").toString());
    project.setName(obj.get("name").toString());

    list.add(project);
}

您可以像这样使用比较器类对它们进行排序:

Collections.sort(list), new Comparator<Project>() {
    public int compare(Project p1, Project p2) {
        return p1.getKey().compareToIgnoreCase(p2.getKey());
    }
});

您还可以将 Project 类和 implements 进行比较:

public class Project implements Comparable<Project> {
   private long id;
   private String key;
   private String name;

   public int compareTo(Project p) {
    if (this.key > p.key)
        return -1;
    else if (this.key < p.key)
        return 1;
    return 0;
   }
}

然后按Collections.sort(list);

对列表进行排序

我的建议是尝试在服务器端对数据进行排序,因为手机的内存是有限的,它可能会让你的应用程序耗费时间来显示数据,但您在服务器端没有内存限制问题。

关于android - 没有光标的字母索引 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11931586/

相关文章:

android - 按下时更改 Android ListView 条目中的图标

java - 获取 Jersey 反序列化为子类

javascript - 为了优化性能,我应该将 Web 数据存储为 CSV 还是 JSON?

android - 如何禁用小部件上的多点触控。 flutter

Android:在 LinearLayout 上绘制边框

jquery - 迭代 JSON 数组 : Get name of the parameter

android - ListView 到 Gridview 导致 RuntimeException : Your content must have a ListView whose id attribute is 'android.R.id.list'

android - 为什么我的 ListView 不工作,android

java - 在 Parcelable 中进行包裹读/写操作时,变量顺序是否重要?

android - 默认语言的 MissingTranslation( "..."未在 "en"中翻译)