Android RecyclerView onClick реализация

Я начинающий Android-разработчик. Не могу понять почему не срабатывает событие OnClick при нажатии на элемент в RecyclerView. Вот мой код:

Адаптер для RecyclerView

public class ModelPortfAdapter extends RecyclerView.Adapter<ModelPortfAdapter.ViewHolder>{

    private ArrayList<String[]> portfolios;
    private ItemClickListener listener;
    private LayoutInflater inflater;

    //конструктор
    public ModelPortfAdapter(Context context, ArrayList<String[]> portf){
        this.portfolios=portf;
        this.inflater=LayoutInflater.from(context);
    }

    //заполняем строкам элемент RecyclerView из items_model_portfolio
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = inflater.inflate(R.layout.items_model_portfolio,parent,false);
        return new ViewHolder(v);
    }

    //привязываем данные к элементу items_model_portfolio
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        String sNamePortf=portfolios.get(position)[0];
        String sRisk=portfolios.get(position)[1];
        String sAbout=portfolios.get(position)[2];
        //вносим значения
        holder.tvName.setText(sNamePortf);
        holder.tvRisk.setText(sRisk);
        holder.tvAbout.setText(sAbout);

    }

    @Override
    public int getItemCount() {
        return portfolios.size();
    }

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

        //определяем элементы внутри
        TextView tvName;
        TextView tvRisk;
        TextView tvAbout;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            //устанавливаем элементы
            tvName=itemView.findViewById(R.id.name_portf);
            tvRisk=itemView.findViewById(R.id.risk_text);
            tvAbout=itemView.findViewById(R.id.about);
            //устанавливаем слушателя 
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            if(listener!=null){
                listener.onItemClick(v,getAdapterPosition());

            }
        }


    }

    //возврат элемента коллекции данных о портфелях
    public String[] getItem(int id){
        return this.portfolios.get(id);
    }

    public void setClickListener(ItemClickListener listener){
        this.listener=listener;
    }

    //интерфейс для обработки события по нажатию
    public interface ItemClickListener{
        void onItemClick(View v,int position);
    }
}

реализация Activity:

public class ModelPortfolio extends AppCompatActivity implements ModelPortfAdapter.ItemClickListener {

   
    private RecyclerView rvPortfolios;
    private ModelPortfAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_model_portfolio);


        Portfolio p = new Portfolio(getApplicationContext());

        ArrayList<String[]> data = p.getAnketPortfolioData();

        rvPortfolios = (RecyclerView) findViewById(R.id.list_portfolio);
        if(data!=null) {
            rvPortfolios.setLayoutManager(new LinearLayoutManager(this));
            adapter = new ModelPortfAdapter(this, data);
            adapter.setClickListener(this);
            rvPortfolios.setAdapter(adapter);
        }

    }


    //обработка события по нажатию на портфель, который выбран. Не срабатывает запуск функции.
    @Override
    public void onItemClick(View v, int position) {
        Toast.makeText(this,"!!!",Toast.LENGTH_SHORT).show();
    }
}

По нажатию на элемент RecyclerView onItemClick не запускается. Прошу помочь с решением проблемы. Заранее благодарен!


Ответы (0 шт):