相关疑难解决方法(0)

为什么RecyclerView没有onItemClickListener()?

我正在探索RecyclerView,我很惊讶地看到RecyclerView它没有onItemClickListener().因为RecyclerView延伸

android.view.ViewGroup

ListView扩展

android.widget.AbsListView

.不过,我解决我的问题写onClick在我的RecyclerView.Adapter:

public static class ViewHolder extends RecyclerView.ViewHolder implements OnClickListener {

    public TextView txtViewTitle;
    public ImageView imgViewIcon;

    public ViewHolder(View itemLayoutView) {
        super(itemLayoutView);
        txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title);
        imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
    }

    @Override
    public void onClick(View v) {

    }
}
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道为什么谷歌被删除了onItemClickListener()

是否有性能问题或其他问题?

java android android-recyclerview

940
推荐指数
17
解决办法
36万
查看次数

在Activity中定义RecyclerView的onCLickListener

RecyclerView与ListView不同,因为它不提供onItemCLickListener类来处理单击事件.

如果通过在ViewHolder中定义onClickListener,单击项目后幕后不会发生很多事情,则可以解决此问题.

如果文本或其他任何必须传递给下一个Activity的内容在ViewHolder有权访问的视图中确实存在,但它是具有RecyclerView的Activity的一部分呢?

在这种情况下,必须在活动内部实现onClickListener,以便可以转发文本.有可能的.

  1. 一种方法是添加一个隐藏视图的Invisible View,然后执行之前已经完成的操作; 在适配器中实现onClickListener.

  2. 不知何故,将该文本传递给适配器.

怎么能"2" 实施?

android android-recyclerview

14
推荐指数
2
解决办法
4万
查看次数

RecyclerView 适配器的 Kotlin 泛型

我正在尝试编写一个通用的 recyclerview 适配器。我找到了几个例子。然而,仍然无法弄清楚如何实现通用适配器。我写的代码是,

open abstract class BaseAdapter<T : RecyclerView.ViewHolder>(private val onClickListener: View.OnClickListener, @LayoutRes private val layoutResource:Int) :
        RecyclerView.Adapter<T>() {
        var items: MutableList<Item> = mutableListOf()

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T  {
            val layout = LayoutInflater.from(parent.context).inflate(layoutResource, parent, false)
            layout.setOnClickListener(onClickListener)
            return T(layout)
        }

        override fun getItemCount(): Int {
            return items.size
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在 line 处收到错误return T(layout)。错误是Expression 'T' of type 'Int' cannot be invoked as a function. The function 'invoke()' is not found

java generics android kotlin

2
推荐指数
1
解决办法
3129
查看次数

标签 统计

android ×3

android-recyclerview ×2

java ×2

generics ×1

kotlin ×1