我有一些从服务器上提取的 JSON 数据。此数据中的字段之一是距离值。我需要在 ListView 中按从低到高的距离对数据进行排序。我不确定该怎么做?
最佳答案
我不知道你到底想做什么,但在你收到 json 响应后需要执行几个步骤。
- 将json数据制作成对象列表
- 对列表进行排序
- 使用排序列表设置 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/