android - 在 Android 中排序列表查看数据

标签 android sorting listview

我有一些从服务器上提取的 JSON 数据。此数据中的字段之一是距离值。我需要在 ListView 中按从低到高的距离对数据进行排序。我不确定该怎么做?

最佳答案

我不知道你到底想做什么,但在你收到 json 响应后需要执行几个步骤。

  1. 将json数据制作成对象列表
  2. 对列表进行排序
  3. 使用排序列表设置 ListView 的适配器

对于以后的问题,请将您的问题分成不同的较小但具体的问题。

<强>1。将json数据制作成对象列表

对象数据模型

class YourDataModel {
       int distance;
       .....
       public int getDistance(){
              return this.distance;
       }

       public void setDistance(int distance){
              this.distance = distance;
       }
}

然后假设 getJsonResponse() 返回包含列表所有数据的 json。让我们将该 json 列表添加到 List :D

String json = getJsonResponse(); // Change that line with your code
Gson gson = new Gson();
Type listType = new TypeToken<List<YourDataModel>>(){}.getType();
ArrayList<YourDataModel> data = (ArrayList<YourDataModel>) gson.fromJson(jsonOutput, listType);

<强>2。对列表进行排序

现在让我们做一些魔术:D 数据是我的数组,里面有项目。

Collections.sort(data, new Comparator<YourDataModel>() {
    @Override
    public int compare(YourDataModel data1, YourDataModel data2) {
          if( data1.getDistance() < data2.getDistance() )
             return 1;
          else
             return 0;
    }
});

<强>3。将带有排序列表的列表适配器设置为 ListView

我不知道要在这里描述什么:D

ListView lvData = (ListView) findViewById(R.id.listview1);
MyCustomAdapter adapter = new MyCustomAdapter(this, R.layout.listview_item_row, data);
lvData.setAdapter(adapter);

我不知道这是否是您想要的,但这就是需要完成的方式。 如果您想直接从 ListView 中对数据进行排序,请阅读:Sort listview with array adapter

关于android - 在 Android 中排序列表查看数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352054/

相关文章:

java - CAB 上的 Android 持久 gridview 选择器

c - 从文件中读取整数并将其存储到数组中并写入文件

android - 不同设备上的listview空指针异常

java - 为什么每次都会重复使用同一个 ListView 项目?

android - 带有 CoordinatorLayout 的 Snackbar 禁用关闭

android - Google Cloud Messaging - 注册 ID 状态

Android打开主屏幕小部件时如何打开Activity?

mysql - 按关联模型中的列对 Rails 数据库表进行排序

javascript - 使用 id 和 parentid 重新排列对象数组

android - 滚动时 ListView 元素背景颜色变为黑色