Как вызвать метод MainActivity из ViewHolder в RecyclerView.Adapter?

Впростой проект приложения на GitHub У меня есть только 2 пользовательских Java-файла:

MainActivity.java содержит исходный код, связанный с Bluetooth и пользовательским интерфейсомDeviceListAdapter.java содержитAdapter а такжеViewHolder для отображения устройств Bluetooth вRecyclerView

MainActivity.java содержит метод для вызова, когда пользователь нажимает на устройство Bluetooth вRecyclerView:

public void confirmConnection(String address) {
    final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Do you want to pair to " + device + "?");
    builder.setPositiveButton(R.string.button_ok, 
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            device.createBond();
        }
    });
    builder.setNegativeButton(R.string.button_cancel, null);
    builder.show();
}

И вViewHolder класс (вDeviceListAdapter.java) прослушиватель кликов определен:

public class DeviceListAdapter extends
  RecyclerView.Adapter<DeviceListAdapter.ViewHolder> {

  private ArrayList<BluetoothDevice> mDevices = new ArrayList<BluetoothDevice>();

  protected static class ViewHolder
        extends RecyclerView.ViewHolder
        implements View.OnClickListener {

    private TextView deviceAddress;

    public ViewHolder(View v) {
        super(v);
        v.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        String address = deviceAddress.getText().toString();

        Toast.makeText(v.getContext(),
                "How to call MainActivity.confirmConnection(address)?",
                Toast.LENGTH_SHORT).show();
    }
  }

Моя проблема:

Как позвонитьconfirmConnection(address) метод изViewHolders onClick метод?

Я продолжаю двигатьсяViewHolder объявление класса между двумя файлами Java, а также попытался поместить его в свой собственный файл - и просто не может найти правильный путь.

Должен ли я добавить поле вViewHolder класс и (когда?) хранить ссылку наMainActivity экземпляр там?

ОБНОВИТЬ:

Это работает для меня, но, кажется, это обходной путь (а также я думал об использованииLocalBroadcastReceiver - что было бы еще более хакерским обходным путем) -

    @Override
    public void onClick(View v) {
        String address = deviceAddress.getText().toString();

        try {
            ((MainActivity) v.getContext()).confirmConnection(address);
        } catch (Exception e) {
            // ignore
        }
    }

Ответы на вопрос(5)

Ваш ответ на вопрос