作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了类似 YouTube 的应用程序,其中包含一个视频 View (顶部)和回收器 View (视频 View 下方)。我陷入困境,我想在 recyclerview 项目上创建 onclicklistner 并更改视频路径来更改视频,但是如何访问适配器类中的 videoview 组件(在 mainactivity 中创建)来设置 videoview 的路径?
最佳答案
定义项目点击事件的接口(interface):
interface OnAdapterItemClickListener {
void onAdapterItemClickListener(int position);
}
让您的 Activity 实现并重写其方法:
public class MaiActivity extends AppCompatActivity implements OnAdapterItemClickListener {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setAdapter(new Adapter(this));
}
@Override
public void onAdapterItemClickListener(int position) {
//CALL YOUR VIDEO PLAYER OR ANY OTHER COMPONENT AND VIEW
}
}
在你的Adapter和ViewHolder中为每个ViewHolder定义一个点击监听器然后调用我们定义的接口(interface)。
public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {
private OnAdapterItemClickListener adapterItemClickListener = null;
public Adapter(OnAdapterItemClickListener listener) {
this.adapterItemClickListener = listener;
}
class MyViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
public MyViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
adapterItemClickListener.onAdapterItemClickListener(getAdapterPosition());
}
}
}
关于java - 如何在recycler View 中访问MainActivity的组件来制作onclick监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61733698/
我是一名优秀的程序员,十分优秀!