package uk.co.alt236.btlescan.ui.details.recyclerview.binder; import android.content.Context; import java.util.Locale; import uk.co.alt236.bluetoothlelib.resolvers.CompanyIdentifierResolver; import uk.co.alt236.btlescan.R; import uk.co.alt236.btlescan.ui.common.recyclerview.BaseViewBinder; import uk.co.alt236.btlescan.ui.common.recyclerview.BaseViewHolder; import uk.co.alt236.btlescan.ui.common.recyclerview.RecyclerViewItem; import uk.co.alt236.btlescan.ui.details.recyclerview.holder.IBeaconHolder; import uk.co.alt236.btlescan.ui.details.recyclerview.model.IBeaconItem; import uk.co.alt236.btlescan.util.TimeFormatter; public class IBeaconBinder extends BaseViewBinder<IBeaconItem> { private static final String STRING_FORMAT = "%s (%s)"; public IBeaconBinder(Context context) { super(context); } private static String formatTime(final long time) { return TimeFormatter.getIsoDateTime(time); } private static String getWithHexEncode(final String first, final int value) { return createLine(first, hexEncode(value)); } private static String getWithHexEncode(final int value) { return createLine(String.valueOf(value), hexEncode(value)); } private static String createLine(final String first, final String second) { return String.format(Locale.US, STRING_FORMAT, first, second); } private static String hexEncode(final int integer) { return "0x" + Integer.toHexString(integer).toUpperCase(Locale.US); } @Override public void bind(BaseViewHolder<IBeaconItem> holder, IBeaconItem item) { final IBeaconHolder actualHolder = (IBeaconHolder) holder; final String companyName = CompanyIdentifierResolver.getCompanyName( item.getCompanyIdentifier(), getContext().getString(R.string.unknown)); actualHolder.getCompanyId().setText( getWithHexEncode(companyName, item.getCompanyIdentifier())); actualHolder.getAdvert().setText(getWithHexEncode(item.getIBeaconAdvertisement())); actualHolder.getUuid().setText(item.getUuid()); actualHolder.getMajor().setText(getWithHexEncode(item.getMajor())); actualHolder.getMinor().setText(getWithHexEncode(item.getMinor())); actualHolder.getTxPower().setText(getWithHexEncode(item.getCalibratedTxPower())); } @Override public boolean canBind(RecyclerViewItem item) { return item instanceof IBeaconItem; } }