サーバーから取得しているJSONデータがいくつかあります。このデータのフィールドの 1 つは距離値です。ListView で最低から最高までの距離でデータを並べ替える必要があります。どうすればいいのかわからないのですが?
8384 次
3 に答える
2
何をしたいのか正確にはわかりませんが、json 応答を受け取った後に必要な手順がいくつかあります。
- jsonデータをオブジェクトのリストにする
- リストを並べ替える
- ソートされたリストでリストビューのアダプターを設定する
今後の質問については、質問を別の小さいが具体的な質問に分けてください。
1.jsonデータをオブジェクトのリストにする
オブジェクト データ モデル
class YourDataModel {
int distance;
.....
public int getDistance(){
return this.distance;
}
public void setDistance(int distance){
this.distance = distance;
}
}
次に、 getJsonResponse() がリストのすべてのデータを含むjsonを返すとしましょう。そして、そのjsonリストをリストにしましょう: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 data は、アイテムを内部に含む私の配列です。
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. 並べ替えられたリストを持つリスト アダプターをリストビューに設定します。
ここで何を説明すればよいかわかりません:D
ListView lvData = (ListView) findViewById(R.id.listview1);
MyCustomAdapter adapter = new MyCustomAdapter(this, R.layout.listview_item_row, data);
lvData.setAdapter(adapter);
それがあなたが望むものかどうかはわかりませんが、これはそれを行う必要がある方法です。リストビューから直接データをソートしたい場合は、これを読んでください:配列アダプターでリストビューをソートする
于 2013-05-03T06:33:19.817 に答える
-1
public void sortByLocation() {
Collections.sort(list, new Comparator<PendingJobInfo>() {
@Override
public int compare(PendingJobInfo lhs, PendingJobInfo rhs) {
// TODO Auto-generated method stub
Double f1 = lhs.getDistance();
Double f2 = rhs.getDistance();
return f1.compareTo(f2);
}
});
}
于 2016-11-01T11:13:40.433 に答える