【发布时间】:2021-09-08 10:23:44
【问题描述】:
我有一个像这样的基本回收器适配器:
public abstract class BaseRecyclerViewAdapter extends RecyclerView.Adapter<BaseViewHolder> {
public @NotNull BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
ViewDataBinding binding = DataBindingUtil.inflate(layoutInflater, viewType, parent, false);
return new BaseViewHolder(binding);
}
public void onBindViewHolder(BaseViewHolder holder, int position) {
Object obj = getObjForPosition(position);
OnItemClickListener clickListener = onItemClickListener();
holder.bind(obj, clickListener, position);
}
@Override
public int getItemViewType(int position) {
return getLayoutIdForPosition(position);
}
protected abstract Object getObjForPosition(int position);
protected abstract int getLayoutIdForPosition(int position);
protected abstract OnItemClickListener onItemClickListener();
}
OnItemClickListener:
public interface OnItemClickListener {
void onItemClick(Object object, View view, int position);
}
基础视图持有者是:
public class BaseViewHolder extends RecyclerView.ViewHolder {
private final ViewDataBinding binding;
public BaseViewHolder(ViewDataBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public void bind(Object obj, OnItemClickListener clickListener, int position) {
itemView.setOnClickListener(v -> clickListener.onItemClick(obj, itemView, position));
binding.setVariable(BR.obj, obj);
binding.executePendingBindings();
}
}
假设 ViewHolder 有 2 个视图,一个 TextView 和一个 ImageView。如何为 ViewHolder 的 itemview 内的所有项目实现 ClickListener
【问题讨论】:
标签: android android-recyclerview baseadapter android-viewholder onitemclicklistener