Android ресайклер просмотр onItemClick определить адаптер - PullRequest
0 голосов
/ 10 июля 2020

У меня есть 3 разных адаптера для 1 представления Recycler, и я реализовал прослушиватель OnClick всех 3 в моем классе:

    public class PokemonMovesDialogFragment extends DialogFragment
            implements LearnsetRecyclerAdapter.ItemClickListener,
            TecnicalHiddenMachineRecyclerAdapter.ItemClickListener,
            EggmoveRecyclerAdapter.ItemClickListener {

 private LearnsetRecyclerAdapter learnsetRecyclerAdapter;
        private TecnicalHiddenMachineRecyclerAdapter tecnicalHiddenMachineRecyclerAdapter;
        private EggmoveRecyclerAdapter eggmoveRecyclerAdapter;
           
        @Override
        public void onItemClick(View view, int position) {
           //HERE I NEED TO IDENTIFY WHICH ADAPTER I'VE SUMMONED
        }
    
    }
    
    public void setAdaptersListeners(){
     //Here I instance the adapters and i set the listener...
    }

Мои 3 адаптера реализовали это:

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

   ......

    ViewHolder(View view) {
        super(view);

        ......
        view.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (mClickListener != null) {
            mClickListener.onItemClick(view, getAdapterPosition());
        }
    }
}

// convenience method for getting data at click position
public Move getItem(int id) {
    return learnsetMoves.get(id);
}

// allows clicks events to be caught
public void setClickListener(ItemClickListener itemClickListener) {
    this.mClickListener = itemClickListener;
}

// parent activity will implement this method to respond to click events
public interface ItemClickListener {
    void onItemClick(View view, int position);
}

Я тестировал его и его работу, с отладчиком я могу видеть, какая позиция и представление вызываются при нажатии, однако я не знаю, КАКИЕ адаптеры были вызваны, я получаю только представление и позицию:

введите описание изображения здесь

1 Ответ

0 голосов
/ 10 июля 2020
public enum AdapterType {
    First,
    Second,
    Third
}

@Override
public void onClick(View view) {
    if (mClickListener != null) {
        view.setTag(AdapterType.First);
        mClickListener.onItemClick(view, getAdapterPosition());
    }
}

@Override
public void onItemClick(View view, int position) {
    //HERE I NEED TO IDENTIFY WHICH ADAPTER I'VE SUMMONED
    AdapterType adapterType = (AdapterType) view.getTag();
}
...