package org.bluetooth.bledemo; import java.util.ArrayList; import java.util.Locale; import android.app.Activity; import android.bluetooth.BluetoothGattService; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; /* display all services for particular device */ public class ServicesListAdapter extends BaseAdapter { private ArrayList<BluetoothGattService> mBTServices; private LayoutInflater mInflater; public ServicesListAdapter(Activity parent) { super(); mBTServices = new ArrayList<BluetoothGattService>(); mInflater = parent.getLayoutInflater(); } public void addService(BluetoothGattService service) { if(mBTServices.contains(service) == false) { mBTServices.add(service); } } public BluetoothGattService getService(int index) { return mBTServices.get(index); } public void clearList() { mBTServices.clear(); } @Override public int getCount() { return mBTServices.size(); } @Override public Object getItem(int position) { return getService(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // get already available view or create new if necessary FieldReferences fields; if (convertView == null) { convertView = mInflater.inflate(R.layout.peripheral_list_services_item, null); fields = new FieldReferences(); fields.serviceName = (TextView)convertView.findViewById(R.id.peripheral_list_services_name); fields.serviceUuid = (TextView)convertView.findViewById(R.id.peripheral_list_services_uuid); fields.serviceType = (TextView)convertView.findViewById(R.id.peripheral_list_service_type); convertView.setTag(fields); } else { fields = (FieldReferences) convertView.getTag(); } // set proper values into the view BluetoothGattService service = mBTServices.get(position); String uuid = service.getUuid().toString().toLowerCase(Locale.getDefault()); String name = BleNamesResolver.resolveServiceName(uuid); String type = (service.getType() == BluetoothGattService.SERVICE_TYPE_PRIMARY) ? "Primary" : "Secondary"; fields.serviceName.setText(name); fields.serviceUuid.setText(uuid); fields.serviceType.setText(type); return convertView; } private class FieldReferences { TextView serviceName; TextView serviceUuid; TextView serviceType; } }