@Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   GCBaseListable item = (GCBaseListable) mListView.getAdapter().getItem(position);
   if (item.getType() == UriData.TYPE_IR_CODE) {
     getProvider().transmit(((IrCode) item).getSignal());
   } else {
     UriData clone = mUriData.clone();
     select(clone, item);
     ((GCProviderActivity) getActivity()).addFragment(clone);
   }
 }
 private void select(UriData data, GCBaseListable listable) {
   data.targetType = UriData.TYPE_MANUFACTURER;
   if (listable != null) {
     if (listable.getType() == UriData.TYPE_MANUFACTURER) {
       data.manufacturer = (Manufacturer) listable;
       data.targetType = UriData.TYPE_DEVICE_TYPE;
     } else if (listable.getType() == UriData.TYPE_DEVICE_TYPE) {
       data.deviceType = (DeviceType) listable;
       data.targetType = UriData.TYPE_CODESET;
     } else if (listable.getType() == UriData.TYPE_CODESET) {
       data.codeset = (Codeset) listable;
       data.targetType = UriData.TYPE_IR_CODE;
     }
   }
 }