Java 我是否应该设置ReyclerView的OnClickListener';OnBindViewHolder()方法中的项目?
我有一个Java 我是否应该设置ReyclerView的OnClickListener';OnBindViewHolder()方法中的项目?,java,android,android-recyclerview,onclicklistener,Java,Android,Android Recyclerview,Onclicklistener,我有一个RecyclerView,每秒更新30次它的项目。现在我的问题是: 如果我在onBindViewHolder(final ViewHolder,int position)方法中设置每个项目的OnClickListner,30View。每秒将创建OnClickListner对象。这会不会引起问题?谢谢 @Override public void onBindViewHolder(final ViewHolder holder, int position) { holder
RecyclerView
,每秒更新30次它的项目。现在我的问题是:
如果我在onBindViewHolder(final ViewHolder,int position)
方法中设置每个项目的OnClickListner,30View。每秒将创建OnClickListner
对象。这会不会引起问题?谢谢
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
}
以下是一个很好的资源:
你可以使用
onBindViewHolder
设置可点击,它就可以工作了
像这个案子
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext, NextModel.class);
mContext.startActivity(intent);
}
});
}
在中为RetcyView的项实现
View.OnClickListener
的方法非常好。它还管理项目选择。是的,您可以。但这不是一个好的做法。您可以在ViewHolder
中设置单击侦听器,您有getAdapterPosition()
可以帮助您获取当前单击的项目。(可能是您需要传递项目或其他内容)。
有关更多信息,请参见,它将导致内存泄漏。您可以创建onClickListener接口并实现它。不要在
onBindViewHolder
中实现,而是在viewholder中实现它。错误的做法是,避免提供上下文并从适配器启动活动。更好地实现@Manzurul-Hoque-Rumi answer的mclicklinklistener这就像我的第一个代码一样,正如@Manzurul-Hoque-Rumi所说,这将导致内存泄漏。
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext, NextModel.class);
mContext.startActivity(intent);
}
});
}