Как создать построитель диалоговых оповещений в классе RecyclerView.Adapter - PullRequest
2 голосов
/ 09 июля 2019

HoAlertDialogBuilder в моем классе RecylerView.Adapater я получаю сообщение об ошибке "в построителе невозможно классу com.example.john.atsnotify.Adapter.PupilGroupAdapter"

Я могу легко создать диалоговое окно оповещения Builder в обычном классе активности, который расширяет AppCompatActivity, но не в классе Adapter. почему?

https://pastebin.com/WqXCG1ChAlertDialog.Builder builder = новый AlertDialog.Builder (PupilGroupAdapter.this);

1 Ответ

2 голосов
/ 09 июля 2019

Аргумент к конструктору (для которого вы в настоящее время передаете PupilGroupAdapter.this) должен иметь тип Context.Ваш адаптер не является Контекстом, поэтому он не работает.

Вы можете извлечь контекст из любого экземпляра View с помощью метода getContext().В вашем случае вы пытаетесь показать диалоговое окно с предупреждением одним нажатием кнопки, чтобы вы могли использовать контекст представления, переданного прослушивателю щелчков:

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
    // ...

    viewHolder.btnAdd.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showAlertDialog(view.getContext()); // pass the context here
        }
    } );
}

private void showAlertDialog(Context context) { // receive the context here
    AlertDialog.Builder builder = new AlertDialog.Builder(context); // use the context here
}
...