Прежде всего .... HappyNew Year !!!! Я начинаю узнавать об Android-программировании, и на самом деле я пытаюсь разработать код. Основная идея - поиск парных устройств Bluetooth, а также список всех устройств BT рядом ... позже я попытаюсь подключить оба устройства, но время от времени: PЗаполнение ListView Android
Моя проблема должна быть простой, потому что я заполняю свой ListView с парными, но используя этот код, я не могу заполнить его, который я обнаружил ... Но я не знаю, что я делаю неправильно, потому что Toast.MakeText показывает эти устройства BT, но не в ListView .... Любой может мне помочь ??? Many Thanks
// SHOW ANDROID VERSION Контекстный контекст = getApplicationContext();
//Setting up for JELLY_BEAN_MR1 and above
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
BluetoothManager bluetoothManager = (BluetoothManager)context.getSystemService(Context.BLUETOOTH_SERVICE);
if (bluetoothManager != null)
{
mBluetoothAdapter = bluetoothManager .getAdapter();
}
} else {
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
}
//Enable
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
}
//Discover my BT
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
//Paired Devices
pairedDevices = mBluetoothAdapter.getBondedDevices();
final ArrayList<String> listBT = new ArrayList<String>();
ListView lv =(ListView)findViewById(R.id.listDevicesFound);
for(BluetoothDevice bt : pairedDevices)
listBT.add(bt.getName());
//Starting Search
final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
listBT.add(device.getName()); //Something happens but not adding to ListView
Toast.makeText(getApplicationContext(), device.getName(),
Toast.LENGTH_SHORT).show();
}
}
};
registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
mBluetoothAdapter.startDiscovery();
//Show ListView
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , listBT));
Я думаю, вы ms добавляются в * listBT *, но не в listView * lv *. Вы должны обновить данные вашего адаптера списка * onReceive() *. Попробуйте добавить эту строку: * lv.setAdapter (новый ArrayAdapter (это, android.R.layout.simple_list_item_1, listBT)); * перед тостом он создаст новый адаптер с новыми значениями. PS: будет лучше, если вы измените свой адаптер как переменную класса. –
Rami
Thx for yor ответить Рами! Оно работает! Итак, можете ли вы дать мне представление об изменении моего адаптера в качестве переменной класса? Что вы имеете в виду? – Fxbrandon