0

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();
        }
    }

});
4

1 に答える 1

0

2 つのリストを使用します。1 つはアダプタに送信し、もう 1 つは検出ごとに入力します。検出が完了したら、それらを切り替えます。そうすれば、検出ごとに 1 回だけ更新されます。

于 2013-01-24T07:56:40.800 に答える