gpt4 book ai didi

android - RecyclerView 的 OnClickListener

转载 作者:太空狗 更新时间:2023-10-29 15:45:35 25 4
gpt4 key购买 nike

与 ListView 不同,Android RecyclerView 似乎实现起来太复杂了。由于 RecyclerView 子项没有 OnItemClickListener,我一直在尝试实现以下内容来注册点击事件:

final RecyclerView rv=(RecyclerView)findViewById(R.id.recycler_view);
LinearLayoutManager llm=new LinearLayoutManager(this);
rv.setLayoutManager(llm);
MyRVAdapter rva=new MyRVAdapter(persons);
rv.setAdapter(rva);

rv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int itemPosition = rv.indexOfChild(v);
Log.d("Tag", String.valueOf(itemPosition));
}
});

出于某种原因,我无法使这段代码正常工作。点击事件根本没有注册!谁能告诉我我做错了什么?我已经看到了一些解决方案,但我认为这应该有效。感谢您的帮助!

最佳答案

不要为整个 RecyclerView 设置 onclicklistener,而是将其设置在 Adapter 的 ViewHolder 类的构造函数中。

一些示例代码将类似于下面的类,它是 recyclerview 适配器中的内部类。

     class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

.....
public ViewHolder(View itemView) {
super(itemView);
.......
itemView.setOnClickListener(this);
}

@Override
public void onClick(View v) {

.......
}
}

在适配器的 onCreateViewHolder 中,将膨胀的 View 传递给 ViewGroup 的构造函数,例如,

 @Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.your_layout, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}

关于android - RecyclerView 的 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32779956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com