Exibir lista de dispositivos Bluetooth pareados em ordem alfabética

Ola o seguinte código exibe na tela uma lista de dispositivos Bluetooth pareados com o aparelho.


/*
		 * Esse trecho não é essencial, mas da um melhor visual a  lista.
		 * Adiciona um titulo a lista de dispositivos pareados utilizando o
		 * layout text_header.xml.
		 */
		ListView lv = getListView();
		LayoutInflater inflater = getLayoutInflater();
		View header = inflater.inflate(R.layout.activity_sup_pairededevices, lv, false);
		((TextView) header.findViewById(R.id.textView)).setText("\nDispositivos pareados\n");
		lv.addHeaderView(header, null, false);

		/*
		 * Usa o adaptador Bluetooth para obter uma lista de dispositivos
		 * pareados.
		 */
		BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
		Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();


		/*
		 * Cria um modelo para a lista e o adiciona a  tela. Se houver
		 * dispositivos pareados, adiciona cada um a lista.
		 */
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
		setListAdapter(adapter);
		if (pairedDevices.size() > 0) {
			for (BluetoothDevice device : pairedDevices) {
				adapter.add(device.getName() + "\n" + device.getAddress());
			}
		}

Gostaria de saber se tem como exibir essa lista em ordem alfabética.

Sim, primeiro crie um Comparator de BluetoothDevice para fazer a ordenação pelo nome:

Comparator<BluetoothDevice> ALPHABETIC_ORDER = new Comparator<BluetoothDevice>() {

 	@Override
	public int compare(BluetoothDevice device1, BluetoothDevice device2) {
		return device1.getName().compareTo(device2.getName());
	}
};

Agora converta o seu Set<BluetoothDevice> para um List<BluetoothDevice>:

List<BluetoothDevice> pairedDevices = new LinkedList<BluetoothDevice>(btAdapter.getBondedDevices());

Após criar o List<BluetoothDevice>,é só ordená-lo utilizando o método Collections.sort(List<T> list, Comparator<? super T> comparator):

Collections.sort(pairedDevices, ALPHABETIC_ORDER);

Daqui pra frente pairedDevices estará com seus elementos ordenados pelo nome do dispositivo.

2 curtidas

Obrigado, resolveu minha pergunta.

1 curtida