2 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
在您的 ViewHolder 類中添加以下內(nèi)容進(jìn)行這些更改 -
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, view); // To bind view with ButterKnife
itemView.setOnClickListener(v -> {
if (listener != null && getAdapterPosition() != RecyclerView.NO_POSITION) {
listener.onItemClick(objects.get(getAdapterPosition()));
}
});
}

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為你的適配器沒問題。但是,在該getItemCount函數(shù)中您需要檢查null. 我按如下方式修改了適配器,并讓我知道這是否有效。
public class DeliverySlotsAdapter extends RecyclerView.Adapter<DeliverySlotsAdapter.ViewHolder> {
private Context context;
LayoutInflater layoutInflater;
List<Object> objects;
private LayoutInflater inflater;
private CallbackListener.SimpleCallback listener;
public DeliverySlotsAdapter(Context context, List<Object> objects) {
this.context = context;
this.objects = objects;
this.inflater = LayoutInflater.from(context);
}
public void setListener(CallbackListener.SimpleCallback listener) {
this.listener = listener;
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
RecyclerView.ViewHolder viewHolder;
View view = inflater.inflate(R.layout.item_checkout_delivery_slots, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.bind(objects.get(position));
}
@Override
public int getItemCount() {
return objects != null && objects.size() > 0 ? objects.size() : 0;
}
class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tvDeliveryScheduleLabel)
TextView tvDeliveryScheduleLabel;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(v -> {
if (listener != null && getAdapterPosition() != RecyclerView.NO_POSITION) {
listener.onItemClick(objects.get(getAdapterPosition()));
}
});
}
public void bind(Object object) {
DeliverySlotItem deliverySlotItem = (DeliverySlotItem) object;
tvDeliveryScheduleLabel.setText(deliverySlotItem.shop_name + " Delivery");
}
}
}
添加回答
舉報(bào)