Bluetooth デバイスを一覧表示するリストビューがありますが、Bluetooth デバイスが検出されるたびにリストビューの行が上書きされます。同じ Bluetooth デバイスの複数のエントリを避けるために、fetch.clear() メソッドを使用して arraylist オブジェクトをクリアしています。fetch.clear() メソッドを他の場所に配置すると、同じ Bluetooth デバイスの複数のエントリが作成されます。リストビューで同じ行を上書きしないようにするにはどうすればよいですか?
ArrayList<Custom> fetch = new ArrayList<Custom>();
btOnOff.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(btOnOff.isChecked()){
btAdapter.startDiscovery();
setProgressBarIndeterminateVisibility(true);
bcReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
deviceName = device.getName();
currentDateTime = DateFormat.getDateTimeInstance().format(new Date());
fetch.clear(); //clear arraylist object
Custom data = new Custom(deviceName, currentDateTime);
fetch.add(data);
lv.setAdapter(cAdapter);
}else if(btAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
btAdapter.startDiscovery();
}
}
};
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(bcReceiver, filter);
} else {
btAdapter.cancelDiscovery();
}
}
});