Как отправить значение «ListView» в «RecycleView» и сохранить их. Я использую Android Studio с использованием JAVA?

#java #android #bluetooth-lowenergy

#java #Android #bluetooth-lowenergy

Вопрос:

Вот как я делаю список во «втором действии».

 private void setList(){

    ArrayList<BluetoothLE> aBleAvailable  = new ArrayList<>();

    if(ble.getListDevices().size() > 0){
        for (int i=0; i<ble.getListDevices().size(); i  ) {
            aBleAvailable.add(new BluetoothLE(ble.getListDevices().get(i).getName(), ble.getListDevices().get(i).getMacAddress(), ble.getListDevices().get(i).getRssi(), ble.getListDevices().get(i).getDevice()));
        }

        BasicList mAdapter = new BasicList(this, R.layout.simple_row_list, aBleAvailable) {
            @Override
            public void onItem(Object item, View view, int position) {

                TextView txtName = view.findViewById(R.id.txtText);

                String aux = ((BluetoothLE) item).getName()   "    "   ((BluetoothLE) item).getMacAddress();
                txtName.setText(aux);

            }
        };

        listBle.setAdapter(mAdapter);
        listBle.setOnItemClickListener((parent, view, position, id) -> {
            BluetoothLE  itemValue = (BluetoothLE) listBle.getItemAtPosition(position);
            ble.connect(itemValue.getDevice(), bleCallbacks());
        });
    }else{
        dAlert = setDialogInfo("Ups", "We do not find active devices", true);
        dAlert.show();
        finish();
    }
}
  

Я хочу переместить выбранные значения, чтобы создать RecicleView, присутствующий в «MainActivity».
Спасибо.

Ответ №1:

Я думаю, вы пытаетесь перечислить устройства Bluetooth в процессе сканирования, а затем, когда пользователь выбирает одно устройство из ListView списка, вы хотите отправить его обратно в MainActivity.

Если это так, вам нужно изменить MainActivity и вместо запуска с SecondActivity помощью startActivity() метода, вы должны использовать startActivityForResult() , чтобы получить результат, когда пользователь выбирает свое устройство для подключения

MainActivity.java

 int BLUETOOTH_DEVICE_REQUEST = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, BLUETOOTH_DEVICE_REQUEST);
  

Тогда у вас SecondActivity есть два случая: либо пользователь выберет устройство, либо нет. Итак, в случае, если он выбрал устройство, вы можете отправить его обратно следующим образом.

SecondActivity.java

 Intent intent= new Intent();
intent.putExtra("result",result);
setResult(Activity.RESULT_OK,intent);
finish();
  

Если вам нужно прервать операцию и ничего не отправлять обратно, вы можете сделать это таким образом

SecondActivity.java

 Intent intent = new Intent();
setResult(Activity.RESULT_CANCELED, intent);
finish();
  

После этого вы можете наблюдать результат при MainActivity использовании обратного onActivityResult() вызова

MainActivity.java

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == BLUETOOTH_DEVICE_REQUEST ) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
            // Use it as you like
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}