If you think the Android project BleSensorTag listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package sample.ble.sensortag.adapters;
/*www.java2s.com*/import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import sample.ble.sensortag.R;
/** Adapter for holding devices found through scanning.
* Created by steven on 9/5/13.
*/publicclass BleDevicesAdapter extends BaseAdapter {
privatefinal LayoutInflater inflater;
privatefinal ArrayList<BluetoothDevice> leDevices;
privatefinal HashMap<BluetoothDevice, Integer> rssiMap = new HashMap<BluetoothDevice, Integer>();
public BleDevicesAdapter(Context context) {
leDevices = new ArrayList<BluetoothDevice>();
inflater = LayoutInflater.from(context);
}
publicvoid addDevice(BluetoothDevice device, int rssi) {
if (!leDevices.contains(device)) {
leDevices.add(device);
}
rssiMap.put(device, rssi);
}
public BluetoothDevice getDevice(int position) {
return leDevices.get(position);
}
publicvoid clear() {
leDevices.clear();
}
@Override
publicint getCount() {
return leDevices.size();
}
@Override
public Object getItem(int i) {
return leDevices.get(i);
}
@Override
publiclong getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
// General ListView optimization code.
if (view == null) {
view = inflater.inflate(R.layout.li_device, null);
viewHolder = new ViewHolder();
viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
viewHolder.deviceRssi = (TextView) view.findViewById(R.id.device_rssi);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
BluetoothDevice device = leDevices.get(i);
final String deviceName = device.getName();
if (deviceName != null && deviceName.length() > 0)
viewHolder.deviceName.setText(deviceName);
else
viewHolder.deviceName.setText(R.string.unknown_device);
viewHolder.deviceAddress.setText(device.getAddress());
viewHolder.deviceRssi.setText(""+rssiMap.get(device)+" dBm");
return view;
}
privatestaticclass ViewHolder {
TextView deviceName;
TextView deviceAddress;
TextView deviceRssi;
}
}