我正在尝试,但当我同时实现这两种方法时,ViewHolder无法访问任何一种方法。有可能吗?我的代码:
public final class SomeViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener, View.OnLongClickListener {
public final AestheticTextView mName;
public final AestheticTextView mNumber;
public SomeViewHolder(View itemView) {
super(itemView);
mName = (AestheticTextView) itemView.findViewById(android.R.id.title);
mNumber = (AestheticTextView) itemView.findViewById(android.R.id.summary);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@Override
public void onClick(View view) {
// doesn't run
}
@Override
public boolean onLongClick(View view) {
// doesn't run
}
}如果我删除一个监听器,就像下面这样,它工作得很好。
public final class SomeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public final AestheticTextView mName;
public final AestheticTextView mNumber;
public SomeViewHolder(View itemView) {
super(itemView);
mName = (AestheticTextView) itemView.findViewById(android.R.id.title);
mNumber = (AestheticTextView) itemView.findViewById(android.R.id.summary);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
// run properly
}
}发布于 2017-11-26 08:50:45
创建绑定方法或您想要调用它的任何名称。
public void bind(ModelClass model, MyInterface listener) {
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Create your own interface and add arguments based on your needs
listener.itemClicked(view);
}
});
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Create your own interface and add arguments based on your needs
listener.itemLongClicked(view);
}
});
}onBindViewHolder()上的
holder.bind(item.get(position), listener);以及在声明您的
Adapter时
adapter = new MyAdapter(item, new OnItemClick() {
@Override
public void itemClicked(View view, ModelClass model) {
//event
}
@Override
public void itemLongClicked(View view, ModelClass model) {
return true;
}
});https://stackoverflow.com/questions/47491939
复制相似问题