Как установить регистр внутри метода onClick для получения позиции элементов RecyclerView - PullRequest
0 голосов
/ 22 мая 2019

У меня есть вид с button и recyclerview.В адаптере recyclerview у меня есть прослушиватель событий OnClick и OnLongClick и методы в моем MainActivity.У меня нет проблем с определением позиции предметов в OnLongClick, так как он используется только предметами в утилизаторе, но OnClick он используется и в button.

Это кодв адаптере:

@ Переопределить public void onClick (Просмотреть представление) {if (mListener! = null) {mListener.onClick (просмотреть);}}

@Override
public boolean onLongClick(View v) {
    if (mLongListener != null) {
        mLongListener.onLongClick(v);
    }
    return true;
}


public void setOnClickListener(View.OnClickListener listener) {
    mListener = listener;
}

public void setOnLongClickListener(View.OnLongClickListener listener) {
    mLongListener = listener;
}

И код в моей MainActivity:

@ Переопределить public void onClick (View v) {int id = v.getId ();switch (id) {case R.id.new_note_tv: ... break;по умолчанию: int posicion = recycler.getChildAdapterPosition (v);окончательное примечание selectedNote = notes.get (posicion);перерыв;}}

@Override
public boolean onLongClick(View v) {
    int posicion = recycler.getChildAdapterPosition(v);
    final Note selectedNote = notes.get(posicion);
    ...
}

Мне удалось сделать это в случае по умолчанию, но я хотел бы знать, есть ли более эффективный способ добиться этого в случае, или я не могу использоватьтот же OnClick метод в MainActivity, как я должен это сделать.

1 Ответ

2 голосов
/ 22 мая 2019

Ваш код полностью в порядке.

Ничто не мешает вам использовать один и тот же прослушиватель кликов среди различных View (при условии, что вы правильно обрабатываете щелчок).

Если ваш прослушиватель кликов становится больше, вы можете создать отдельного прослушивателя, который будет использоваться для представлений от адаптера ... Что-то вроде:

mAdapter.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int posicion = recycler.getChildAdapterPosition(v);
        final Note selectedNote = notes.get(posicion);
        // etc...  
    }
});

Но ваш код в порядке.

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