Создайте интерфейс с методом в вашем Adapter
классе следующим образом:
public interface OnAdapterInteractionListener {
void showDialog();
}
Измените конструктор вашего Adapter
класса и получите Activity
/ Fragment
как OnAdapterInteractionListener
в этом. Сохраните его как глобальную переменную в вашем классе Adapter
. При вызове этого конструктора из вашего Activity
или Fragment
, передайте this
для OnAdapterInteractionListener
.
private LayoutInflater Inflater;
private OnAdapterInteractionListener mListener;
public PlayersAdapter(@NonNull Context context, @NonNull List<Player> objects, OnAdapterInteractionListener listener) {
super(context, R.layout.list_players,objects);
Inflater = LayoutInflater.from(context);
mListener = listener;
}
Заставьте Activity
/ Fragment
реализовать интерфейс адаптера OnAdapterInteractionListener
и Реализуйте его метод следующим образом:
@Override
public void showDialog() {
ChangeNameDialog changeNameDialog = new ChangeNameDialog();
changeNameDialog.show(getSupportFragmentManager(), "Change Name Dialog");
}
Наконец, в вашем Adapter
измените ваш onClick()
метод следующим образом:
namePlayerTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mListener != null) mListener.showDialog();
}
});
Надеюсь, он служит вашей цели!