package com.example.indoorbeacon;
public class RECORangingListAdapter extends BaseAdapter {//추상클래스. 기본적인 것 구현하는 클래스
private ArrayList<RECOBeacon> mRangedBeacons;//객체 배열이나 리소스에 정의된 배열로부터 데이터 가져옴
private LayoutInflater mLayoutInflater;
RECOBeacon recoBeacon;
public RECORangingListAdapter(Context context) {
super();
mRangedBeacons = new ArrayList<RECOBeacon>();
mLayoutInflater = LayoutInflater.from(context);
}
public void updateBeacon(RECOBeacon beacon) {
synchronized (mRangedBeacons) {
if(mRangedBeacons.contains(beacon)) {
mRangedBeacons.remove(beacon);}
mRangedBeacons.add(beacon);}
}
public void updateAllBeacons(Collection<RECOBeacon> beacons) {
synchronized (beacons) {
mRangedBeacons = new ArrayList<RECOBeacon>(beacons);
}
}
public void clear() {
mRangedBeacons.clear();
}
@Override
public int getCount() {//어댑터에 몇개의 항목이 있는지 조사
return mRangedBeacons.size();
}
@Override
public Object getItem(int position) {//포지션 위치의 항목ID를 리턴함.
return mRangedBeacons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.list_ranging_beacon, parent, false);
viewHolder = new ViewHolder();
//viewHolder.recoProximityUuid = (TextView)convertView.findViewById(R.id.recoProximityUuid);
viewHolder.recoMajor = (TextView)convertView.findViewById(R.id.recoMajor);
viewHolder.recoMinor = (TextView)convertView.findViewById(R.id.recoMinor);
//viewHolder.recoTxPower = (TextView)convertView.findViewById(R.id.recoTxPower);
viewHolder.recoRssi = (TextView)convertView.findViewById(R.id.recoRssi);
viewHolder.recoProximity = (TextView)convertView.findViewById(R.id.recoProximity);
viewHolder.recoAccuracy = (TextView)convertView.findViewById(R.id.recoAccuracy);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
}
recoBeacon = mRangedBeacons.get(position);
String proximityUuid = recoBeacon.getProximityUuid();
//viewHolder.recoProximityUuid.setText(String.format("%s-%s-%s-%s-%s", proximityUuid.substring(0, 8), proximityUuid.substring(8, 12), proximityUuid.substring(12, 16), proximityUuid.substring(16, 20), proximityUuid.substring(20) ));
viewHolder.recoMajor.setText(recoBeacon.getMajor() + "");//major
viewHolder.recoMinor.setText(recoBeacon.getMinor() + "");//minor
//viewHolder.recoTxPower.setText(recoBeacon.getTxPower() + "");
viewHolder.recoRssi.setText(recoBeacon.getRssi() + "");//rssi
viewHolder.recoProximity.setText(recoBeacon.getProximity() + "");
viewHolder.recoAccuracy.setText(String.format("%.2f", recoBeacon.getAccuracy()));//immediate, far
return convertView;
}
class ViewHolder {
//TextView recoProximityUuid;
TextView recoMajor;
TextView recoMinor;
//TextView recoTxPower;
TextView recoRssi;
TextView recoProximity;
TextView recoAccuracy;
}
}
-----------------------------------------------------------------------------------------------------------------------
===> 진하게 표시한 부분의 값이 어느 범위 안의 값이면 이벤트를 발생시키도록 하고 싶습니다.
블루투스 신호의 값을 받아옵니다.
그리고 recoBeacon = mRangedBeacons.get(position); 의 부분이 이해가 가지 않아요..ㅠㅠㅠㅠ
그냥 int 변수에 recobeacon.getMajor를 하려 했는데 여러 개의 블루투스 디바이스의 신호를 받아오기에 하나의 값만이 들어갈 수가 없어서인지 오류가 납니다.....ㅠㅠㅠㅠ도와주세요..ㅠㅠㅠ