WorldofCode Ответов: 0

Привет... Когда я нажимаю на элементы в представлении recycler, он ничего не делает ...


это мой код ... я хочу установить прослушиватель щелчков для каждого элемента в recyclrview, но это не сработало хорошо

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

    val layoutview =
        LayoutInflater.from(parent.context).inflate(R.layout.product_items, parent, false)
    val vh = ViewHolder(layoutview)

    vh.itemView.setOnClickListener {
        val pos = vh.adapterPosition

            val activity = it.context as AppCompatActivity

            val bundle = Bundle()

            val myFragment = ItemDetailsfragment()
            myFragment.arguments = bundle

            val productitem = product[pos]

            bundle.putString("title", productitem.title)

            bundle.putString("price", productitem.price.toString())

            bundle.putString("image", productitem.image.toString())

            activity.supportFragmentManager.beginTransaction()
                .replace(R.id.homepage, myFragment)
                .addToBackStack(null)
                .commit()


        }

    return vh


}


Что я уже пробовал:

из On BindViewHolder я могу сделать это и нажать на элементы, но проблема в BindViewHolder заключается в том, что когда я нажимаю везде на экране recyclerview, он переходит к элементам, и это не очень хорошо ... так что скажем может быть он работает на onCreateViewHolder

Sandeep Mewara

Поделитесь, если это поможет:
https://stackoverflow.com/questions/35584584/recyclerview-onclick-not-working
https://stackoverflow.com/questions/39974257/onclicklistener-doesnt-work-with-recyclerview-items
https://antonioleiva.com/recyclerview-listener/

David Crow

Я сделал это таким образом:

@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
    ...
    holder.itemView.setTag(array.get(position));
    holder.itemView.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick( View view )
        {
            ItemDetails details = (ItemDetails) view.getTag();
            ...
        }
    });
}

0 Ответов