6
Tôi đang lưu trữ scanresult vào danh sách theo mã bên dưới:Làm cách nào để sắp xếp danh sách getScanResults() dựa trên cường độ Tín hiệu theo thứ tự tăng dần?
List<ScanResult> results = wifi.getScanResults();
sb = new StringBuilder();
try
{
for(int i = 0; i < results.size(); i++){
sb.append(new Integer(i+1).toString() + ".");
sb.append("SSID:-").append((results.get(i).SSID).toString());
sb.append("BSSID:-").append((results.get(i).BSSID).toString());
sb.append("Level:-").append((results.get(i).level));
sb.append("Frequency:-").append((results.get(i).frequency));
sb.append("\n\n");
}
textStatus.setText("");
textStatus.append("\n\n\n");
textStatus.append(sb);
}
Tôi muốn sắp xếp kết quả này dựa trên cường độ tín hiệu (cấp) vì vậy tôi đang tạo ra một mảng 2D có mức độ dữ liệu và Mac. vì vậy tôi đã viết mã cho này:
String rssi[][]=new String[2][results.size()];
for(int i = 0; i <results.size(); i++){
rssi[0][i] = String.valueOf(results.get(i).level);
rssi[1][i]= results.get(i).BSSID;
}
StringBuilder tmp=new StringBuilder();
Arrays.sort(rssi,new Comparator<String[]>() {
@Override
public int compare(String[] str1, String[] str2) {
final String lv1= str1[0];
final String lv2= str2[0];
return lv1.compareTo(lv2);
}
);
Dựa trên mã trên tôi đang mong đợi rssi[][]
theo thứ tự sắp xếp, nhưng nó không phải đang xảy ra ...
cảm ơn rất nhiều. Danh sách được sắp xếp ngay bây giờ .. – user2517884
Bạn cũng có thể tận dụng bộ so sánh được tích hợp vào phương thức 'WifiManager.compareSignalLevel' thay cho câu lệnh trên dòng' return': http://developer.android.com/reference/android/ net/wifi/WifiManager.html # compareSignalLevel (int, int) – sAlexander