package pl.llp.aircasting.activity.extsens; import pl.llp.aircasting.R; import pl.llp.aircasting.sensor.ExternalSensorDescriptor; import android.content.Context; import android.widget.SimpleAdapter; import com.google.common.collect.Lists; import java.util.List; import java.util.Map; public class SensorAdapter extends SimpleAdapter { public static final String ADDRESS = "address"; public static final String NAME = "name"; public static final String ACTION = "action"; public static final String[] KEYS = new String[]{ADDRESS, NAME, ACTION}; public static final int[] FIELDS = new int[]{R.id.address, R.id.name, R.id.action}; protected List<Map<String, String>> data; SensorAdapter(Context context) { this(context, Lists.<Map<String, String>>newArrayList()); } SensorAdapter(Context context, List<Map<String, String>> data) { super(context, data, R.layout.external_sensor_item, KEYS, FIELDS); this.data = data; } public ExternalSensorDescriptor get(int position) { Map<String, String> map = data.get(position); return new ExternalSensorDescriptor(map.get(NAME), map.get(ADDRESS), map.get(ACTION)); } public Map<String, String> remove(int position) { Map<String, String> remove = data.remove(position); notifyDataSetChanged(); return remove; } protected int findPosition(ExternalSensorDescriptor descriptor) { return findPosition(descriptor.getAddress()); } boolean contains(String address) { return findPosition(address) > -1; } protected int findPosition(String address) { for (int i = 0; i < data.size(); i++) { Map<String, String> deviceMap = data.get(i); if (address.equalsIgnoreCase(deviceMap.get(ADDRESS))) return i; } return -1; } }