Implement onItemClickListener using MVP pattern

OnClickListener is an interface from Android SDK. Your presenter should not know anything about the Andriod SDK. It should be pure Java so it can be tested just by using Unit test on the JVM. It shouldn't know anything about views, RecyclerView, Adapter nor ViewHolder.

Your onBindViewHolder doesn't violate this principle because it's separated by an abstract interface - RepositoryRowView.

You should implement OnClickListener in adapter/viewholder and call your presenter from there.

public class RepositoryViewHolder extends RecyclerView.ViewHolder implements RepositoryRowView, View.OnClickListener {

    TextView titleTextView;
    TextView starsCountTextView;
    RepositoriesListPresenter presenter;

    public RepositoryViewHolder(View itemView, RepositoriesListPresenter presetner) {
        super(itemView);
        titleTextView = itemView.findViewById(R.id.repoTitleText);
        starsCountTextView = itemView.findViewById(R.id.repoStarsCountText);
        this.presenter = presenter;
        itemView.setOnClickListener(this);
    }

    @Override
    public void setTitle(String title) {
        titleTextView.setText(title);
    }

    @Override
    public void setStarCount(int starCount) {
        starsCountTextView.setText(String.format("%s ★", starCount));
    }

    @Override
    public void onClick(View view) {
        if (presenter != null) {
            presenter.onItemInteraction(getAdapterPosition());
        }
    }
}

Instead of calling the presenter inside your adapter, I would rather make an interface of the click to call it from the view, since you will instantiate this adapter in your view, it's a good thing to keep the MVP pattern with the click of the elements inside your view and not in the adapter itself.

This example is in Kotlin, but I'm sure you will understand it.

First, just make a simple interface to call your click event whenever the user clicks on any item in your list.

class EquipmentAdapter(private val context: Context,private var equipmentList:ArrayList<Equipment>,itemListener:RecyclerViewClickListener): RecyclerView.Adapter<EquipmentAdapter.EquipmentViewHolder>() {

    interface RecyclerViewClickListener {
        fun recyclerViewListClicked(v: View?, position: Int)
    }

    companion object{
        var itemClickListener: RecyclerViewClickListener? = null
        var equipmentSearchList:ArrayList<Equipment>? = null
    }

    init {
        equipmentSearchList = equipmentList
        itemClickListener = itemListener
    }

Then , inside your ViewHolder you should call this interface to handle the click

inner class EquipmentViewHolder(itemView: View): RecyclerView.ViewHolder(itemView), View.OnClickListener {
    val equipmentName:TextView = itemView.txt_equipmentname

    init {
        itemView.setOnClickListener(this)
    }

    override fun onClick(v: View?) {
        itemClickListener?.recyclerViewListClicked(v, adapterPosition)
    }
}

Lastly, just implement the interface of the click in the view that you are calling the adapter, and then just manage the presenter interactions there instead inside the adapter

class EquipmentActivity : BaseActivity(), EquipmentContract.EquipmentView, EquipmentAdapter.RecyclerViewClickListener ...

And implement the click method

override fun recyclerViewListClicked(v: View?, position: Int) {
    presenter.onItemInteraction(position)
}

Doing this, you are making sure that the click of the elements in the list are being made from the view itself and not from the adapter, here, you can interact with the presenter as always and also do more things that will keep your project clean.