【发布时间】:2018-11-27 15:49:41
【问题描述】:
我需要在片段中创建的 Android RecyclerView 中获取单击项目的位置。由于recyclerview没有listview之类的监听器,我在网上搜索并找到了一些方法。有些不起作用,有些没有提供位置值。然后我从我看到的示例中使用了我自己的精炼代码,并且在花费了一整天后它工作了。现在我的问题是我需要知道包括性能问题在内的任何缺点。甚至更好的方法(如果可能的话)。
也有人可以帮我在同一个项目中为多个recyclerview重用这段代码
RecyclerButtonClick.java
public class RecyclerButtonClick implements View.OnClickListener {
YourFragment yourFragment=new YourFragment();
public int pos;
public RecyclerButtonClick(int position){
this.pos=position;
}
@Override
public void onClick(View v) {
yourFragment.recyclerButtonClicked(pos);
}
}
现在已经设置好了,我们可以在 Fragment java 文件中的函数中编写要执行的操作。 然后通过创建 Fragment 的实例来调用它。
public void recyclerButtonClicked(int position) {
...
//position will have the index value of the rows in RecyclerView.
...
}
RecyclerButtonClick类在RecycleViewAdapter的onBindViewHolder()中的setOnClickListener中被调用
public void onBindViewHolder(MyViewHolder holder, int position) {
...
holder.YOUR_BUTTON.setOnClickListener(new RecyclerButtonClick(position));
...
}
非常感谢帮助
如果需要,请更新此 github 链接。 https://github.com/abhinanduN/Android--RecyclerView-onClick-Listener/blob/master/README.md
【问题讨论】:
-
您为什么要创建该类而不是接口,这是您在搜索过程中肯定会遇到的常用方法?
-
顺便说一句,您的代码将无法正常工作,因为您创建了一个新片段来调用 click 方法,而不是将其传播到现有片段
-
这个问题已经回答了,参考这个click
-
@TimCastelijns 确实有效。
-
它可能会编译,但不会工作。至少不是基于你在这里展示的内容
标签: android performance android-fragments android-recyclerview