ClickListener в cardview возвращает исключение null - PullRequest
0 голосов
/ 29 апреля 2020

У меня возникла проблема, когда я пытаюсь щелкнуть карточку, я хочу, чтобы она сделала тост с его идентификатором. Но всякий раз, когда я нажимаю на просмотр карты, он всегда падает и получает нулевое исключение на слушателе. уже объявляю слушателя но все равно разбился. Спасибо

Класс прослушивателя

public interface ResetPasswordListener {
    void onClickCardview(String userid);
}

Класс адаптера

public class ResetPasswordAdapter extends RecyclerView.Adapter<ResetPasswordAdapter.ViewHolder> implements ResetPasswordListener {

    private List<ResetPasswordRespModel> resetList = new ArrayList<>();
    private ResetPasswordListener resetPasswordListener;

    public void setOnClick(ResetPasswordListener listener) {
        this.resetPasswordListener = listener;
    }

    @Override
    public void onClickCardview(String userid) {
        Log.d("ID VALUE", userid);
        resetPasswordListener.onClickCardview(userid);
    }
}

Так я устанавливаю прослушиватель в классе фрагмента

 @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        listResetPasswordBinding = DataBindingUtil.inflate(inflater, R.layout.list_reset_password, container, false);
        return inflater.inflate(R.layout.fragment_reset_password, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        listResetPasswordBinding.setOnClick(new ResetPasswordListener() {
            @Override
            public void onClickCardview(String userid) {
                Toast.makeText(getActivity(), userid, Toast.LENGTH_SHORT).show();
            }
        });
    }

Ошибка Бревна

 java.lang.NullPointerException: Attempt to invoke interface method 'void example.com.absensiapp.view.listener.ResetPasswordListener.onClickCardview(java.lang.String)' on a null object reference
    at example.com.absensiapp.view.adapter.ResetPasswordAdapter.onClickCardview(ResetPasswordAdapter.java:35)
    at example.com.absensiapp.databinding.ListResetPasswordBindingImpl._internalCallbackOnClick(ListResetPasswordBindingImpl.java:227)
    at example.com.absensiapp.generated.callback.OnClickListener.onClick(OnClickListener.java:11)

1 Ответ

0 голосов
/ 29 апреля 2020

Кажется, проблема в onCreateView. Вы раздуваете макет дважды один с помощью DataBindingUtil.inflate и один раз с inflater.inflate. Измените его

 @Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    listResetPasswordBinding = DataBindingUtil.inflate(inflater, R.layout.list_reset_password, container, false);
    return listResetPasswordBinding.getroot();
}

Также вызовите setOnClick из ResetPasswordAdapter, чтобы установить слушателя. Пока вы не установите прослушиватель, вы будете получать нулевой указатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...