package io.x8.kontaktbeacon;
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 org.altbeacon.beacon.Beacon;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
public class BeaconCollectionAdapter extends BaseAdapter {
public class BeaconComparator implements Comparator<Beacon> {
@Override
public int compare(Beacon beacon1, Beacon beacon2) {
return Double.compare(beacon1.getDistance(), beacon2.getDistance());
}
}
private ArrayList<Beacon> beacons;
private LayoutInflater inflater;
public BeaconCollectionAdapter(Context context) {
this.inflater = LayoutInflater.from(context);
this.beacons = new ArrayList<Beacon>();
}
public void replaceWith(Collection<Beacon> beacons) {
this.beacons.clear();
this.beacons.addAll(beacons);
Collections.sort(this.beacons, new BeaconComparator());
notifyDataSetChanged();
}
@Override
public int getCount() {
return beacons.size();
}
@Override
public Beacon getItem(int position) {
return beacons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = inflater.inflate(R.layout.list_item, null);
}
Beacon beacon = getItem(position);
TextView mac = (TextView) v.findViewById(R.id.macAddress);
TextView uuid = (TextView) v.findViewById(R.id.uuidNumber);
TextView major = (TextView) v.findViewById(R.id.majorNumber);
TextView minor = (TextView) v.findViewById(R.id.minorNumber);
TextView distance = (TextView) v.findViewById(R.id.distance);
mac.setText(beacon.getBluetoothAddress());
uuid.setText(beacon.getId1().toString());
major.setText(beacon.getId2().toString());
minor.setText(beacon.getId3().toString());
distance.setText(new DecimalFormat("#0.000").format(beacon.getDistance()));
return v;
}
}